如何在命令提示符中显示 git 状态和 conda 环境?

如何在命令提示符中显示 git 状态和 conda 环境?

我正在使用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
}

相关内容