このコマンドはスクリプト(または-c)内で機能しますが、直接実行すると(対話型シェルでは)機能しません。

このコマンドはスクリプト(または-c)内で機能しますが、直接実行すると(対話型シェルでは)機能しません。

これは働きます:

$ bash -c 'while true; do echo foo; sleep 1; done'
foo
foo
...

しかし、これではありません:

$ while true; do echo foo; sleep 1; done
bash: syntax error near unexpected token `done'

zshでも同じ問題が発生します。

zsh:「完了」付近で解析エラーが発生しました。

注:ダッシュは有効です。

ベストアンサー1

このような問題は、aliases非対話型シェルでは無効になっていることを知っている人がほとんどいないため、しばしば誤解されます。

doあなたの場合、問題を引き起こすのはnameという別名です。

同様の問題を調査するには、通常、次のコマンドを使用して新しいシェルを起動できます。

HOME=/tmp $shell

それからもう一度やり直してください。これにより、対話型シェルは起動スクリプトを読み取ることができません。

おすすめ記事