我是git的新手,我正在尝试将当前的git分支添加到我现有的提示中,其定义如下:
RESET="\[\017\]"
NORMAL="\[\033[0m\]"
RED="\[\033[31;1m\]"
YELLOW="\[\033[33;1m\]"
WHITE="\[\033[37;1m\]"
SMILEY="${WHITE}:)${NORMAL}"
FROWNY="${RED}:(${NORMAL}"
SELECT="if [ \$? = 0 ]; then echo \"${SMILEY}\"; else echo \"${FROWNY}\"; fi"
export PS1="${RESET}${YELLOW}\u@\h${NORMAL} \`${SELECT}\` ${YELLOW}\w $(__git_ps1) >${NORMAL} "
我尝试了(通过再次获取我的.bashrc
文件)它似乎工作,但后来我去了另一个分支,它没有更新。如何确保$(__git_ps1)
未缓存?
答案 0 :(得分:121)
您需要$
上的反斜杠,因此不会立即展开。 (与`...`
比较,这是另一种撰写$(...)
的方式。)
export PS1="${RESET}${YELLOW}\u@\h${NORMAL} \`${SELECT}\` ${YELLOW}\w \$(__git_ps1) >${NORMAL} "
我同意@MikeSep关于使用单引号的问题,但实际上让颜色立即更换是更优化的。没必要,只是稍好一点。也就是说,如果您使用单引号, 更容易理解发生了什么。
答案 1 :(得分:20)
您的PS1
字符串可能在保存之前已经过评估,但您确实希望每次获得命令提示符时都运行__git_ps1
命令。我建议您为export PS1='${RESET}...'
行使用单引号而不是双引号。