我正在尝试构建一个 Bash 提示符,该提示符将包含我的 git 分支信息(使用 git 的 bash-completion 中的 __git_ps1 )和一个彩色笑脸,以指示最近运行的命令是否成功。
笑脸是使用这种技术创建的,我在 SO 上找到了它:
SMILEY="${GREEN}:)${COLOR_NONE}"
FROWNY="${RED}:(${COLOR_NONE}"
STATUS_EMOTICON="if [ \$? = 0 ]; then echo \"${SMILEY}\"; else echo \"${FROWNY}\"; fi"
这是我要使用的提示行:
export PS1="[\t]${RED}[\u@$MACHINE:${BOLD_CYAN}\w${GREEN}\$(__git_ps1 ' %s')${RED}]${COLOR_NONE} \`${STATUS_EMOTICON}\`\n$ "
不幸的是,看起来由 __git_ps1 运行的程序会覆盖该$?
值,即使在运行false
.
取出 __git_ps1 调用...
export PS1="[\t]${RED}[\u@$MACHINE:${BOLD_CYAN}\w${RED}]${COLOR_NONE} \`${STATUS_EMOTICON}\`\n$ "
...使表情符号正常工作。
所以我显然需要做的是在运行${STATUS_EMOTICON}
之前评估,但在输出之后__git_ps1
包括评估值。那可能吗? __git_ps1