bash退出状态始终为0

时间:2013-06-20 14:31:46

标签: bash command-prompt

我遇到了这个奇怪的问题,即使它没有成功执行,我的退出状态总是返回0。

我想使用以下代码在提示符处输出退出状态:

function status() {
    echo $?
}

export PS1="\$(status)>"

当我运行它时,我得到以下输出

 0❯ pwd
/Users/tringuyen
 0❯ ad
bash: ad: command not found
 0❯ echo $?
127

显然,第二个最后一个命令ad没有返回0状态代码。然而,这就是我从提示中得到的。

有谁知道这里会发生什么?

编辑6/20 11:57 AM:问题似乎是$?总是0无论如何,除了.bashrc文件本身内存在错误,使其返回不同于0的值。

3 个答案:

答案 0 :(得分:1)

以下版本对您的bash版本有用吗?

export PS1="\$?>"

答案 1 :(得分:0)

我在$ PS1中使用以下内容:

 PS1="\`if [ \$? = 0 ]; then echo \[\e[33m\]^_^\[\e[0m\]; else echo \[\e[31m\]\$? O_O\[\e[0m\]; fi\`"

Src:https://github.com/sanmiguel/dotfiles/blob/master/bash/bash_functions.symlink#L63

答案 2 :(得分:0)

我也有类似的问题,但我的功能看起来不同。问题是,我丢失了分号";"在VAR = $?

之后

OLD:

function status() {
   VAR=$?
   echo $VAR
}

无论如何都要归零。

NEW:

function status() {
   VAR=$?;
   echo VAR;
}

现在返回了正确的返回值。

export PS1="\$(status)>"