在提示符下显示git分支名称在屏幕上不起作用

我更新了我的.bashrc文件,如下所示:

PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$' 

它的作品只是find,我可以在提示中看到我的分支名称。 但是,当我运行“屏幕”,我得到了

“-bash:__git_ps1:找不到命令”

这可能是什么原因?

这个博客文章解释说,你必须添加行source /etc/bash_completion.d/git然后才能使用__git_ps1

这里是完整的例子:

 source /etc/bash_completion.d/git export PS1='\w$(__git_ps1 "(%s)") > ' 

这也使分行自动完成。

使用该格式,您的提示将类似于(不着色):

 ~/my-repo(master) > 

我发现修改现有的提示符而不是定义一个新的提示符会更简洁。 以下片段将git分支名称添加到现有提示($ PS1)。 您可以将以下代码片段添加到〜/ .bashrc文件中:

 source /etc/bash_completion.d/git (for Ubuntu 12.04 or less) source /etc/bash_completion.d/git-prompt (for Ubuntu 13.04 and higher) PS1=$PS1'$(__git_ps1 "(%s) ")' 

如果你想使用颜色分支,你也可以这样做:例如,绿色的颜色定义为[\ e [0; 32m]。 我们将这添加到git_ps1函数的内部字符串中,然后使用\ e [0m重置颜色。 转义括号需要指出插入了“特殊”字符。

 PS1=$PS1'$(__git_ps1 "\[\e[0;32m\](%s) \[\e[0m\]")' 

许多其他的颜色定义可以在这里找到

问题是bash需要作为登录shell运行,这个函数可以在默认的cygwin设置中使用。 如果你在cygwin bash中运行bash ,你将会遇到同样的问题。 要设置屏幕以登录模式运行bash,请将以下行添加到〜/ .screenrc文件中:

 shell -bash 
 # Add following line to /.bashrc to show Git branch name in ssh prompt PS1='\[\033[0;31m\]\w\[\033[0;33m\]$(__git_ps1)\[\e[0m\]$ ' 

\[\033[0;31m\]是红色的

\[\033[0;33m\]是黄色的

\[\e[0m\]是正常的

.bashrc添加source ~/.bash_profile

有同样的问题,它只是为我工作。

这是在Debian / Ubuntu上测试的。


  1. 安装bash-completion
  2. 确保~/.bashrc存在以下行,并且不会被注释掉。

 if [ -f /etc/bash_completion ] && ! shopt -oq posix; then . /etc/bash_completion fi