在bash
版本中4.4.12
,当我输入:
set -e
在命令提示符下,shell 退出,返回128
.
set -u
为什么天气好的时候会出现这种情况呢?
答案1
例如,如果您有一个命令作为 扩展的一部分返回非零退出状态PROMPT_COMMAND
(在打印提示符之前执行),那么当您设置该选项bash
时,这将触发 shell 立即退出。errexit
set -e
另一种可能性是存在DEBUG
返回非零退出状态的陷阱集。然而陷阱DEBUG
被执行前Enter调用一个命令,因此在您按after 后不会导致 shell 立即退出set -e
,而是在启动下一个命令之前退出。
与set -u
你设置nounset
shell选项。如果您尝试将任何未设置的变量展开为$@
和$*
,则此选项将导致 shell 发出错误。它不会导致 shell 退出,除非set -e
它也有效。
与set -u
生效和PS1
shell中未设置的变量将要errexit
使用 设置选项后立即退出set -e
。