问题描述
我更新了我的.bashrc文件,如下所示:
PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$'
它只能找到,我可以在提示符中看到我的分支名称。但是,当我运行”screen”时,我明白了
“-bash: __git_ps1: command not found”
这可能是什么原因?
最佳解决方案
This blog post说明您必须先添加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函数的内部字符串中,然后使用\ [[0m]重置颜色。需要转义的括号表示插入了”special”字符。
PS1=$PS1'$(__git_ps1 "\[\e[0;32m\](%s) \[\e[0m\]")'
许多其他颜色定义can be found here
第三种解决方案
问题是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
。
有同样的问题,它只对我有用。