输入 `set -e` 会终止 bash

输入 `set -e` 会终止 bash

bash版本中4.4.12,当我输入:

set -e

在命令提示符下,shell 退出,返回128.

set -u为什么天气好的时候会出现这种情况呢?

答案1

例如,如果您有一个命令作为 扩展的一部分返回非零退出状态PROMPT_COMMAND(在打印提示符之前执行),那么当您设置该选项bash时,这将触发 shell 立即退出。errexitset -e

另一种可能性是存在DEBUG返回非零退出状态的陷阱集。然而陷阱DEBUG被执行Enter调用一个命令,因此在您按after 后不会导致 shell 立即退出set -e,而是在启动下一个命令之前退出。

set -u你设置nounsetshell选项。如果您尝试将任何未设置的变量展开为$@$*,则此选项将导致 shell 发出错误。它不会导致 shell 退出,除非set -e它也有效。

set -u生效PS1shell中未设置的变量将要errexit使用 设置选项后立即退出set -e

相关内容