在分支开关上进行 bash 完成重置

make bash completion reset on branch switch

我有以下问题:

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

"[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\] "

谁能告诉我我做错了什么?我似乎找不到任何关于此错误的信息

你的问题是这一行的双引号:

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 的值在使用之前进行评估,因此该函数将在该点被正确调用(并查看当前的 branch/etc。)。

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

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