签出另一个 git 分支时,Git 分支名称未在终端提示符上更新

签出另一个 git 分支时,Git 分支名称未在终端提示符上更新

我使用以下命令在 Bash 终端中使用 Git 分支名称设置提示:

export PS1="\w $(git branch | grep '*') "

运行上述命令后,它第一次显示正确的 Git 分支名称export。但是,当签出另一个 Git 分支时,提示不会更改为显示新的 Git 分支名称。

我猜测 subbash 命令 $(...) 只执行一次,如何让它在每次按下 Enter 后显示提示符时运行?

答案1

您需要设置PROMPT_COMMAND。首先,定义一个在每次显示新提示时运行的函数:

function setps1()
{
    PS1="\w $(git branch | grep '*') "
}

并将其分配给 PROMPT_COMMAND:

PROMPT_COMMAND=setps1

还可以查看以下项目 液体提示

答案2

使用单引号(将传递给提示)而不是双引号(仅在创建时进行评估)设置 PS1。使用 PROMPT_COMMAND 和 PS1 时有一些规则,当我发现一条提到引号问题的评论时,我能够快速了解​​这些规则。

https://stackoverflow.com/questions/38429007/why-ps1-is-not-updated-with-the-git-branch-name

相关内容