我希望我的提示符显示最后一个命令的退出状态,所以我将PS1设置为:
PS1="$? > "但它总是打印0 >。
例如,即使在运行false时,提示符也不会打印1 >或任何退出状态。
为什么会发生这种情况?
编辑:
我尝试使用一个函数来设置我的提示符,测试退出状态是否大于0,所以它不会总是打印0 >,只有当退出状态为非零时。
promptcmd() {
_EXIT=$?
test $_EXIT -gt 0 && printf "\e[1;31m [$_EXIT]"
printf "\e[0m ❯ "
unset _EXIT
}
PS1="$(promptcmd)"但它也不起作用。
发布于 2020-02-12 12:21:45
$?是在定义PS1时展开的,因为您使用了双引号。
您可以使用单引号将展开延迟到显示PS1:
PS1='$? > '这种“双展开”不是一般参数的属性,而是shell如何使用PS1值的结果。echo "$PS1"仍将显示文字字符串$? >,但当shell显示提示符时,它将展开在该值中找到的任何参数扩展。
https://stackoverflow.com/questions/60188189
复制相似问题