我试图让shell提示符显示当前的git分支名称。
我已经阅读了一些教程和博客文章等等,据我所知,我正在做正确的事情,但它似乎没有起作用。
我希望提示看起来像这样:
dannys-macbook:hillcrest-store [master]$
但目前看起来像这样:
dannys-macbook:hillcrest-store danny$
我已将以下内容添加到〜/ .bash_profile:
PATH=$PATH:/usr/local/bin; export PATH
COLOR1="\[\e[1;32m\]"
COLOR2='\[\e[1;1m\]'
COLOR3='\[\e[m\]'
GIT_STATUS=$(__git_ps1 " %s")
PROMPT_CHAR="$"
PROMPT="${COLOR1}\u@\h${COLOR3} \w${COLOR2}${GIT_STATUS} ${COLOR2}${PROMPT_CHAR$
PS1="$PROMPT"
export PS1
我不确定我做错了什么,也许我应该以某种方式'重置'提示?
答案 0 :(得分:12)
更简单的解决方案:引用GIT_STATUS以便它不会在bash启动时得到评估,而是在bash显示提示时进行评估:
COLOR1='\[\e[1;32m\]'
COLOR2='\[\e[1;1m\]'
COLOR3='\[\e[m\]'
GIT_STATUS='$(__git_ps1 " %s")'
PROMPT_CHAR='\$'
PS1="${COLOR1}\u@\h${COLOR3} \w${COLOR2}${GIT_STATUS} ${COLOR2}${PROMPT_CHAR}"
另请注意,导出PS1不是一个好主意。
答案 1 :(得分:1)
您希望每次显示提示时(即在您键入下一个命令之前)更新PS1以包含当前分支。请求bash通过在precmd函数中再次设置PS1来执行此操作。 bash在显示提示之前运行此函数:
precmd() {
PS1=...
}