提示不更新 git 分支

Pic*_*ard 6 bash git bashrc

我试图在我的提示中集成当前的 git 分支,但它没有按预期运行。我在 ubuntu 16.04 和 git 2.7.4 上使用 bash。当我启动终端时,没有显示任何 git。如果我.bashrc从存储库内部获取我的分支,则会显示分支,但不再更新。这是我在 .bashrc 中写的:

green="\[\033[01;32m\]"
blue="\[\033[01;34m\]"
no_color="\[\033[00m\]"
purple="\[\033[01;35m\]"

source ~/.git-prompt.sh
export PS1="$purple\u $green$(__git_ps1 " (%s)") $blue\W $no_color \$ "
Run Code Online (Sandbox Code Playgroud)

更新:

我尝试按照git-prompt 中的说明进行操作,但结果仍然相同。但是,如果我只是从 git-prompt 复制建议:PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '它有效,但当然看起来不像我想要的。我遗漏了一些语法错误吗?即使不使用导出,模板 PS1 也能工作,只是PS1=...

Pic*_*ard 8

好的,我找到了解决方案。没有必要使用提示命令。该错误是由于语法错误引起的。

如果我分配 PS1 的内容""以便将我的变量用于颜色,它只会在.bashrc来源时执行 __git_ps1 函数。

但是,当我在其中分配 PS1 内容''并在没有颜色变量的情况下执行此操作并写出代码时,它会按预期工作。正如我在这里读到的,最好不要将 PS1 导出到环境中。

所以解决方案看起来像:

PS1='\[\033[01;35m\]\u \[\033[01;32m\]$(__git_ps1 " (%s)") \[\033[01;34m\]\W \[\033[00m\] \$ '
Run Code Online (Sandbox Code Playgroud)

但是我很想知道,这是什么原因。它适用于""macOS。