2011-09-03 53 views
4

我想让我的shell提示符显示当前的git分支名称。在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}\[email protected]\h${COLOR3} \w${COLOR2}${GIT_STATUS} ${COLOR2}${PROMPT_CHAR$ 
PS1="$PROMPT" 
export PS1 

我不知道我在做什么错,也许我应该'重置'提示以某种方式?

+3

您的'PROMPT ='行显然不完整,与'$ {PROMPT_CHAR $'一样结束。 –

+0

从明显的第一个开始,你是否在你的配置文件中输入'git-completion.bash'? – Barend

回答

1

你想PS1进行更新,以遏制当前分支每次显示的提示时,也就是你输入的下一个命令。通过在precmd函数中再次设置PS1来请求bash执行此操作。庆典展示你的提示之前运行此功能:

precmd() { 
    PS1=... 
} 
11

简单的解决方案:报价GIT_STATUS所以它不会在启动bash的评价,而是当bash是显示提示获取评估:

COLOR1='\[\e[1;32m\]' 
COLOR2='\[\e[1;1m\]' 
COLOR3='\[\e[m\]' 
GIT_STATUS='$(__git_ps1 " %s")' 
PROMPT_CHAR='\$' 
PS1="${COLOR1}\[email protected]\h${COLOR3} \w${COLOR2}${GIT_STATUS} ${COLOR2}${PROMPT_CHAR}" 

另请注意,导出PS1不是一个好主意。

+0

为什么出口PS1不是一个好主意?我搜索了它,发现http://thread.gmane.org/gmane.linux.lfs.beyond.devel/15803。看起来很好的理由。 +1谢谢。 –