我遇到了这个奇怪的问题,即使它没有成功执行,我的退出状态总是返回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
的值。
答案 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)>"