Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
%?Zsh 包括使用转义序列在提示符中显示上一个命令的返回码/退出码的能力。
%?
但是我想得到以下提示:
user@host ~ [%?] %
当退出代码不同于 0 并且:
user@host ~ %
当退出代码为 0 时。
如果我%?单独使用它总是显示,即使%?是 0。另外我想要方括号,但只有当退出代码不是 0 时。
最简单的方法是什么?
将其添加到PS1您希望退出代码出现的位置:
PS1
%(?..[%?] )
这是一个条件表达式。如果第一个点之前的表达式为真,则输出两个点之间的部分(在这种情况下没有)。如果为假,则输出第二个点之后的部分。
例如:
PS1='%n%m %~ %(?..[%?] )%# '
或者,您可以:
setopt PRINT_EXIT_VALUE
始终打印显示先前返回值的换行符。
我不喜欢这个用于普通用途,但它通常对调试 shell 脚本很有用。