OSX Bash提示显示git状态

时间:2014-03-19 21:08:33

标签: git bash environment-variables command-prompt prompt

我正在尝试说服我的bash提示添加着色当我的当前仓库有任何类型的未提交更改。

git_status() {
    printf "%s : %s" $(git rev-parse --abbrev-ref HEAD) $(git rev-parse --short=10 HEAD)
}

has_changed() {
    if [[ -n `git diff HEAD` ]]; then
        printf " - %s Δ %s"  ${Green} ${Color_Off}
    fi
}

PS1=${Purple}"\w"${Color_Off}" @ \$(git_status) \$(has_changed)\n \$ "

这部分有效,但是has_changed函数返回转义字符而不是颜色:

~/projects/project @ master : 8675309 - \033[0;32m Δ \033[0m

版本的bash:GNU bash, version 3.2.51(1)-release (x86_64-apple-darwin13),在OSX Mavericks上。

1 个答案:

答案 0 :(得分:1)

为了使状态进入提示,您需要使用PROMPT_COMMAND环境变量。

  

PROMPT_COMMAND

If set, the value is interpreted as a command to execute before the printing of each primary prompt ($PS1).

这是一个简单的例子(测试和工作),您可以根据自己的需要进行调整:

PROMPT_COMMAND='echo -ne $(if [[ -n `git diff HEAD` ]]; then echo true; fi)'

还相关:What is the difference between PS1 and PROMPT_COMMAND