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

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

最初は「Bash Roulette」をするのと同じくらい楽しかったですが…今は古いです。

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

set -eターミナルソースのどこかにbashスクリプトが設定されている可能性があると聞きました。

.bash_profile//確認してみましたが.bashrcそこに.profileないようです。set -e

別の明らかな犯人がありますか?

答え1

set -eまあ、私を困っているのは事実私の意志のためでした。

私が見つけた方法はset -e次のとおりです。bash -lx

最良の方法は、次を使用することです。

bash -lx > lx.log 2>&1

次に、対応するログファイルを開き、次を検索しますset

線が変だと判断したら、set -eその線を削除すると問題が解決します! (もちろん、コンピュータを再起動した方が良いかもしれません。)

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

答え2

問題を解決したい場合は、set +e以下を含めてください.bashrc終わり。

土地を掘り下げることもできますが(他の場所もたくさんあるかもしれませんset -e)、それがうまくいくでしょう。

しかし、これがset -eあなたの一部であれば、上記$PROMPT_COMMANDはうまくいきません。printf '%s\n' "$PROMPT_COMMAND"中に何があるのか​​見てください。

答え3

私の場合、set -e私のbashの起動のどこにも存在せず、私のエントリset +eに追加しても.bashrc問題は解決しませんでした。

set -e私のプロジェクトのために定期的に実行するbashスクリプトにあることがわかりました. ./my-dev-script.sh私のbashエイリアスを尊重してください。

私が気付いていないのは、.実行する前に追加のエントリを追加すると、スクリプトのbashオプションがすべての一般的なターミナルセッションに適用されることです。

私の個人的なbashエイリアスを尊重するbashスクリプトを実行するための新しいソリューションが必要ですが、少なくともrogueのソースを見つけましたset -e。正しく実行するだけで、./my-dev-script.sh残念な「Bash Roulette」シナリオを防ぐことができます。

関連情報