我是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} "
Run Code Online (Sandbox Code Playgroud)
我尝试了(通过.bashrc再次获取我的文件)它似乎工作,但后来我去了另一个分支,它没有更新.我怎样才能确保$(__git_ps1)没有缓存?
gee*_*aur 124
你需要一个反斜杠,$所以它不会立即扩展.(与之相比`...`,这是一种不同的写作方式$(...).)
export PS1="${RESET}${YELLOW}\u@\h${NORMAL} \`${SELECT}\` ${YELLOW}\w \$(__git_ps1) >${NORMAL} "
Run Code Online (Sandbox Code Playgroud)
我同意@MikeSep关于使用单引号的问题,但实际上让颜色立即更换是更优化的.没必要,只是稍好一点.这就是说,它是更容易理解发生了什么事情,如果你使用单引号.
Mik*_*itz 21
您的PS1字符串可能在保存之前已经过评估,但您确实希望__git_ps1每次获得命令提示符时都运行该命令.我建议你使用单引号而不是双引号export PS1='${RESET}...'.