Showing git branch in shell prompt?

北城余情 提交于 2019-12-10 15:26:18

问题


I am trying to get my shell prompt to display the current git branch name.

I have read a few tutorials and blog posts etc. and as far as I understand I'm doing everything correctly but it doesn't seem to be working.

I would like the prompt to look like this:

dannys-macbook:hillcrest-store [master]$

but currently it looks like this:

dannys-macbook:hillcrest-store danny$ 

I have added the following to ~/.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

I'm not sure what I'm doing wrong, maybe I should be 'resetting' the prompt somehow?


回答1:


You want PS1 to be updated to contain the current branch every time the prompt is displayed, that is, before you type the next command. Ask bash to do this by setting PS1 again in the precmd function. bash runs this function before showing you the prompt:

precmd() {
    PS1=...
}



回答2:


Simpler solution: quote the GIT_STATUS so it doesn't get evaluated on bash startup, but instead gets evaluated when bash is displaying the prompt:

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}"

Also note that exporting PS1 is not a good idea.



来源:https://stackoverflow.com/questions/7295011/showing-git-branch-in-shell-prompt

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!