web-dev-qa-db-ja.com

ゼロ以外のコードで終了する私の端末のコマンドは、私の端末ウィンドウを閉じます

最初は「バッシュルーレット」をするようなちょっとおもしろかったけど...

ゼロ以外のコードで終了する端末のコマンドは、端末ウィンドウを閉じます

たぶん私は、ターミナルがソースするどこかでbashスクリプトにset -eを設定していると言われました。

.bash_profile/.bashrc/.profileを確認しましたが、set -eが表示されていないようです。

他に明らかな犯人はいますか?

22
Alexander Mills

了解しました。確かに、わずらわしいset -eが原因で問題が発生しました。

私がset -eを見つけた方法はbash -lxを使用していた

最善の方法は、以下を使用することです。

bash -lx > lx.log 2>&1

次に、そのログファイルを開き、set...を検索します。

わずらわしいset -eを見つけたら、その行を削除して問題を解消できます。 (マシンの再起動は良いアイデアかもしれません)。

私の場合、set -eは.bash_profileがソースとするファイルにありましたが、この行は.bash_profile自体にはありませんでした。

21
Alexander Mills

問題を解決するだけの場合は、set +e.bashrcの終わりに含めます。

あなたは掘りに行くことができます-set -eがあるかもしれない他の多くの場所があります-しかし、それは多くの世話をします。

ただし、set -e$Prompt_COMMANDの一部である場合、上記は機能しません。 printf '%s\n' "$Prompt_COMMAND"を試して、内容を確認してください。

13
Wildcard