我正在使用git-prompt.sh脚本用于在 bash 命令提示符下显示 git 状态。使用PROMPT_COMMAND
方法也可以显示颜色:
.bashrc:
source ~/.bash.d/git-prompt.sh # Show git branch name at command prompt
export GIT_PS1_SHOWCOLORHINTS=true
# use existing PS1 settings
PROMPT_COMMAND=$(sed -r 's|^(.+)(\\\$\s*)$|__git_ps1 "\1" "\2"|' <<< $PS1)
到目前为止,这可以显示 git 状态,但它不再显示 conda 环境。
当我用 注释掉该行时PROMPT_COMMAND=...
,会显示 conda 环境,例如
(base) [user@linux ~]$
显然问题在于 git-prompt.sh 使用了 PROMPT_COMMAND 而 conda 使用了 PS1。
有办法实现这个吗?也许用 PROMPT_COMMAND 显示 conda 环境?
答案1
您只需在 PS1 声明上方添加一个函数即可配置 PS1 以显示 git 分支:
git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
然后,您只需将其放置\$(git_branch)
在 PS1 中所需的任何位置,然后像往常一样为其着色。
如果你需要更多详细信息,这个博客向您展示如何操作。
答案2
您只需在 .bashrc 末尾添加以下行即可。
export PROMPT_COMMAND='__git_ps1 "${CONDA_PROMPT_MODIFIER}${YOUR_PROMPT}" ...'
例如我的看起来像这样
ORIG_PS1="\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w"
export PROMPT_COMMAND='__git_ps1 "${CONDA_PROMPT_MODIFIER}${ORIG_PS1}" "\n\\[\033[00m\]> "'
答案3
我建议使用下面的代码而不是解析git branch
,因为当有很多分支时,它可能会花费更长的时间
parse_git_branch() {
git symbolic-ref HEAD --short 2> /dev/null
}