我正在尝试自定义我的 bash 提示符,但遇到了一些条件问题。
我现在的PS1
样子是这样的。
export PS1="\
$PS1USERCOLOR\u\
$COLOR_WHITE@\
$COLOR_GREEN\h\
$COLOR_WHITE:\
$COLOR_YELLOW\W\
\`if type parse_git_branch > /dev/null 2>&1; then parse_git_branch; fi\`\
\`if [ \$? = 0 ]; then echo -e '$COLOR_WHITE'; else echo -e '$COLOR_RED'; fi\`\$\
$COLOR_WHITE"
前 6 行只是设置常规
PS1
内容。第 7 行然后调用一个函数来显示当前的 git 分支和状态(如果适用)。
然后第 8 行测试前一个命令的返回码并更改最后的颜色
$
。第 9 行将提示设置回白色,为用户的命令做好准备。
然而,第 8 行响应的是第 7 行函数的返回代码,而不是我最初预期的前一个命令。
我已经尝试在第 7 行之前移动第 8 行,并且一切正常。但我不希望第 8 行在第 7 行之前,$
必须在最后。
我之前尝试过将变量设置为的值,$?
然后像这样测试该变量
export PS1="\
\`RETURN=\$?\`\
$PS1USERCOLOR\u\
$COLOR_WHITE@\
$COLOR_GREEN\h\
$COLOR_WHITE:\
$COLOR_YELLOW\W\
\`if type parse_git_branch > /dev/null 2>&1; then parse_git_branch; fi\`\
\`if [ \$RETURN = 0 ]; then echo -e '$COLOR_WHITE'; else echo -e '$COLOR_RED'; fi\`\$\
$COLOR_WHITE"
但这不起作用。
有人知道如何解决我的问题吗?