使分支交换机上的bash完成重置

时间:2015-02-09 14:52:39

标签: git bash git-bash bash-completion

我有以下问题:

我已经设置了我当前所在的分支,在我的命令提示符中显示如下:

" [Current_working_dir](主)"

然而,每次切换分支时,我都会收到以下错误,并且分支没有刷新:

[work_environment] (master) git checkout test 
M   bash/bashrc
Switched to branch 'test'
[work_environment] (master)

我的.bashrc如下所示:

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"

# Bash git completion
source /etc/bash_completion.d/git-prompt

#Colored command prompt + minimum view
export PS1="\[\e[0;34m\][\[\e[1;34m\]\W\\[\e[0;34m\]]\[\e[0m\]\[\e[0;32m\]$(__git_ps1)\[\e[0m\] "

任何人都可以告诉我我做错了什么吗?我似乎无法找到有关此错误的任何内容

2 个答案:

答案 0 :(得分:3)

您的问题是此行上的双引号:

export PS1="\[\e[0;34m\][\[\e[1;34m\]\W\\[\e[0;34m\]]\[\e[0m\]\[\e[0;32m\]$(__git_ps1)\[\e[0m\] "

正在评估该行立即,而__git_ps1仅被调用一次。

尝试echo "$PS1"看看我的意思。

你想要单引号。 PS1的值在使用之前进行评估,以便在该点正确调用函数(并查看当前分支/等)。

export PS1='\[\e[0;34m\][\[\e[1;34m\]\W\\[\e[0;34m\]]\[\e[0m\]\[\e[0;32m\]$(__git_ps1)\[\e[0m\] '

答案 1 :(得分:1)

在PS1声明周围使用单引号而不是双引号。此时评估变量然后设置为PS1。您希望每次使用PS1时都要对它们进行评估。