2011-09-03 86 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謝謝。 –

相關問題