问题描述
(理论上)问题很简单。我想要的只是在zsh提示符下显示小于或等于128的返回码,而大于128则显示相应的信号。我找不到执行此操作的任何示例,zsh docs仅指定如何去做
如果最后一条命令的退出状态为 n
以下是我唯一可以使用的版本(仅适用于SIGINT
):
PROMPT='%130(?.[$(kill -l $?)].$?)> '
我也尝试过使用precmd
,但完全失败了(看来zsh执行函数时返回代码受到干扰,但在那儿没有引用我。)
解决方法
解决方案确实很简单,只涉及创建一个不同的函数(我将返回代码传递给该函数),而不是使用precmd
。以下是我的zsh提示的最终版本,包括返回代码/信号行为:
code () {
if (( $1 > 128 )); then
echo "SIG$(kill -l $1)"
else
echo $1
fi
}
setopt promptsubst
PROMPT='%F{green}%n%f@%m %F{cyan}%~%f> '
RPROMPT='%(?..%F{red}[$(code $?)]%f'