`set -e` と入力すると bash が終了します

`set -e` と入力すると bash が終了します

bashバージョンでは4.4.12、次のように入力します:

set -e

コマンドプロンプトで、シェルが終了し、 を返します128

set -u大丈夫なのになぜこんなことが起こるのでしょうか?

答え1

たとえば、 の展開の一部としてゼロ以外の終了ステータスを返すコマンドがある場合PROMPT_COMMAND(これは でプロンプトを印刷する前に実行されます)、でオプションをbash設定すると、シェルが直ちに終了します。errexitset -e

DEBUGもう一つの可能​​性は、ゼロ以外の終了ステータスを返すトラップセットがあるということです。DEBUGただし、トラップは実行されます前にEnterコマンドが呼び出されると、 を押した後にシェルがすぐに終了するのではなくset -e、次のコマンドが起動される前に終了します。

set -uを使用すると、シェル オプションが設定されます。このオプションにより、とnounset以外の未設定の変数を展開しようとすると、シェルがエラーを発行します。 も有効でない限り、シェルが終了することはありません。$@$*set -e

有効set -uそしてPS1シェル内の未設定の変数意思errexitでオプションを設定するとすぐに終了しますset -e

関連情報