配置bash_profile以显示git分支两次返回我的分支

时间:2011-10-21 17:57:21

标签: bash unix git-branch .bash-profile

# show git branch
function parse_git_branch {
  git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}

function proml {
  local        BLUE="\[\033[0;34m\]"
  local         RED="\[\033[0;31m\]"
  local   LIGHT_RED="\[\033[1;31m\]"
  local       GREEN="\[\033[0;32m\]"
  local LIGHT_GREEN="\[\033[1;32m\]"
  local       WHITE="\[\033[1;37m\]"
  local  LIGHT_GRAY="\[\033[0;37m\]"
  case $TERM in
    xterm*)
    TITLEBAR='\[\033]0;\u@\h:\w\007\]'
    ;;
    *)
    TITLEBAR=""
    ;;
  esac

PS1="${TITLEBAR}\
$WHITE\w$GREEN\$(parse_git_branch)$BLUE\
$GREEN\$ "
PS2='> '
PS4='+ '
}
proml

前面的代码返回分支名称三次。我只需要看一次......

~/projects/sms(apps2)$ 
(apps2)
(apps2)

如何纠正此问题以仅显示路径+分支?

ie .. ~/projects/sms(apps2)$

2 个答案:

答案 0 :(得分:3)

尝试将最后一行更改为PROMPT_COMMAND=proml

- )

答案 1 :(得分:3)

这是你脚本的最后一行搞砸了。直接从proml~/.bash_profile设置~/.bashrcPS*个环境变量调用(apps2),因此更改文件夹时不会更新{并且您可能proml显示在您稍后输入的每个文件夹中。)

相反,PROMPT_COMMAND应在脚本的最后一行设置为PROMPT_COMMAND=proml

PROMPT_COMMAND

parse_git_dirty()保存每次bash显示提示之前要执行的函数的名称。有关详细信息,请参阅here

另外,谈到git-aware shell提示,你已经有了一个很好的补充。除了当前分支,您可以获得有关任何未提交更改的指示。参见例如{{1}}功能的this blog post