我想在我的提示中包含返回状态。 (很容易添加'$? '
,对吧?)
但是,我只希望返回非零状态(和尾随空格)。
例子:
sd ~ $ false
1 sd ~ $ true
sd ~ $
答案1
确保该promptvars
选项已打开(默认情况下)。然后输入您喜欢的任何代码PROMPT_COMMAND
来定义一个变量,其中包含您在提示中想要的内容。
PROMPT_COMMAND='prompt_status="$? "; if [[ $prompt_status == "0 " ]]; then prompt_status=; fi'
PS1='$prompt_status\h \w \$ '
在 zsh 中,您可以使用其条件构造PS1
(bash 没有等效项)。
PS1='%(?,,%? )%m %~ %# '
答案2
不需要使用PROMPT_COMMAND
。这里它会带来不必要的麻烦。您所要做的就是定义此函数:
prompt_status()
{
[ $? = 0 ] && return
echo -n "${?} "
}
然后像这样设置 PS1:
shopt -s promptvars
PS1='$(prompt_status)'$PS1
prompt_status()
内部子壳的评估可防止$?
被更改。
答案3
我能拥有的最好的东西是通过
PS1='${?/#0/}'":$PS1"
我添加了 a:
作为分隔符,所以不完全是问题中的内容。