# show git branch
function parse_git_branch {
git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}
function proml {
local BLUE="\[\033[0;34m\]"
local RED="\[\033[0;31m\]"
local LIGHT_RED="\[\033[1;31m\]"
local GREEN="\[\033[0;32m\]"
local LIGHT_GREEN="\[\033[1;32m\]"
local WHITE="\[\033[1;37m\]"
local LIGHT_GRAY="\[\033[0;37m\]"
case $TERM in
xterm*)
TITLEBAR='\[\033]0;\u@\h:\w\007\]'
;;
*)
TITLEBAR=""
;;
esac
PS1="${TITLEBAR}\
$WHITE\w$GREEN\$(parse_git_branch)$BLUE\
$GREEN\$ "
PS2='> '
PS4='+ '
}
proml
前面的代码返回分支名称三次。我只需要看一次......
~/projects/sms(apps2)$
(apps2)
(apps2)
如何纠正此问题以仅显示路径+分支?
ie .. ~/projects/sms(apps2)$
答案 0 :(得分:3)
尝试将最后一行更改为PROMPT_COMMAND=proml
- )
答案 1 :(得分:3)
这是你脚本的最后一行搞砸了。直接从proml
或~/.bash_profile
设置~/.bashrc
仅PS*
个环境变量调用(apps2)
,因此更改文件夹时不会更新{并且您可能proml
显示在您稍后输入的每个文件夹中。)
相反,PROMPT_COMMAND
应在脚本的最后一行设置为PROMPT_COMMAND=proml
:
PROMPT_COMMAND
parse_git_dirty()
保存每次bash显示提示之前要执行的函数的名称。有关详细信息,请参阅here。
另外,谈到git-aware shell提示,你已经有了一个很好的补充。除了当前分支,您可以获得有关任何未提交更改的指示。参见例如{{1}}功能的this blog post。