在 PS1 中显示非零返回状态

在 PS1 中显示非零返回状态

我想在我的提示中包含返回状态。 (很容易添加'$? ',对吧?)

但是,我只希望返回非零状态(和尾随空格)。

例子:

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:作为分隔符,所以不完全是问题中的内容。

相关内容