我想在我的bashrc / zshrc中使用类似'set -e'的东西,这样每当我启动一个命令时它就会在第一次错误时停止并返回到提示符,而不是继续执行其余的命令。
然而,在bashrc / zshrc配置文件中使用'set -e'不起作用,因为每当我输入带错误的命令时它都会退出终端会话(而不是返回提示符)(例如diff file.txt file.txt返回非零值
答案 0 :(得分:0)
它没有按预期运行的原因是因为运行脚本会启动具有自己环境的子shell。从命令提示符运行单个命令将在出错时退出,但脚本有时会继续运行。我假设你在谈论运行脚本。
请阅读以下链接中的信息:How "Exit Traps" Can Make Your Bash Scripts Way More Robust And Reliable
使用该页面上列出的功能,然后在脚本中设置陷阱将增加脚本在发生错误时干净地退出的可能性。如果您从脚本中删除CTRL-C,它甚至会运行清理功能!
确保将set -e放在每个脚本中。
此外,此页面还包含一些相同的材料,以及更多内容:Writing Robust Bash Shell Scripts
希望这有帮助