我的终端中以非零代码退出的任何命令都会关闭我的终端窗口

Ale*_*lls 23 bash terminal shell-script bashrc

一开始这有点好笑,就像玩“Bash Roulette”……但现在它变老了,哈哈

我的终端中以非零代码退出的任何命令都会关闭我的终端窗口

有人告诉我,也许我已经set -e在我的终端来源的某个地方设置了一些 bash 脚本。

我已经检查.bash_profile/ .bashrc/.profile它看起来不像set -e是在那里。

还会有其他明显的罪魁祸首吗?

Ale*_*lls 22

好吧,确实是任性set -e惹了我的麻烦。

我发现的方式set -e是使用bash -lx

最好的办法是使用:

bash -lx > lx.log 2>&1

然后打开该日志文件并搜索set...

一旦你发现那个任性,set -e你可以删除那条线,你的问题应该消失了!(机器重启可能是个好主意)。

就我而言,它set -e位于 .bash_profile 来源的文件中,但该行不在 .bash_profile 本身中。

  • 在你的 shell 中对 `source` 安全的东西比“随机 shell 脚本”要小得多。`-e` 在实际脚本中很有用,用于愚蠢的错误检查。(或者确保你没有*忘记*错误检查任何东西。) (3认同)

Wil*_*ard 13

如果您只是想解决问题,set +e.bashrc最后包含在您的- 中

你可以去挖掘——可能还有很多其他的地方set -e——但这会解决很多问题。

但是,如果set -e是您的一部分,$PROMPT_COMMAND则上述方法将不起作用。试着printf '%s\n' "$PROMPT_COMMAND"看看里面有什么。