bash
バージョンでは4.4.12
、次のように入力します:
set -e
コマンドプロンプトで、シェルが終了し、 を返します128
。
set -u
大丈夫なのになぜこんなことが起こるのでしょうか?
答え1
たとえば、 の展開の一部としてゼロ以外の終了ステータスを返すコマンドがある場合PROMPT_COMMAND
(これは でプロンプトを印刷する前に実行されます)、でオプションをbash
設定すると、シェルが直ちに終了します。errexit
set -e
DEBUG
もう一つの可能性は、ゼロ以外の終了ステータスを返すトラップセットがあるということです。DEBUG
ただし、トラップは実行されます前にEnterコマンドが呼び出されると、 を押した後にシェルがすぐに終了するのではなくset -e
、次のコマンドが起動される前に終了します。
set -u
を使用すると、シェル オプションが設定されます。このオプションにより、とnounset
以外の未設定の変数を展開しようとすると、シェルがエラーを発行します。 も有効でない限り、シェルが終了することはありません。$@
$*
set -e
有効set -u
そしてPS1
シェル内の未設定の変数意思errexit
でオプションを設定するとすぐに終了しますset -e
。