使bash提示更小

时间:2014-05-17 21:48:40

标签: windows git bash ps1

目前我的Windows Git Bash shell提示符如下所示: UserName@ComputerName Path (Branch)

当我echo $PS1时,我得到:
\[\033]0;$MSYSTEM:\w\007\]\n\[\033[32m\]\u@\h \[\033[33m\]\w$(__git_ps1)\[\033[0m\]\n$

在我的.bashrc文件中,我试图像这样更新:

PS1="\[\033[32m\]\w$(__git_ps1)\[\033[0m\]\n$"

发生的事情是我失去了UserName@ComputerName这就是我想要的。但由于某种原因,$(__git_ps1)也消失了。

但是当我这样做时:PS1=${PS1:46}它按预期工作。

我的计划是添加一些额外的更改(替换没有任何固定路径),因此子串方法不是最优的。

发生了什么事?

更新
当我直接在shell中执行PS1="\[\033[33m\]\w$(__git_ps1)\[\033[0m\]\n$"时,它也可以按预期工作。

1 个答案:

答案 0 :(得分:2)

问题在于,由于双引号,$(__git_ps1)在定义提示时扩展,而不是在稍后提取提示时扩展。

它直接在shell中工作,因为通过再次定义它,可以使$(__git_ps1)再次针对您所在的目录进行扩展。如果更改分支,您将看到它被卡住了。

解决方案是使用单引号,以便$(__git_ps1)成为提示中的文字值,以便稍后进行评估:

PS1='\[\033[33m\]\w$(__git_ps1)\[\033[0m\]\n$ '