Git Bash (Windows) 中的条件提示,带 miniconda

Conditional prompt in Git Bash (Windows), with miniconda

我在 windows 10 上使用 git bash 和 miniconda 用于我的 python 环境,我一直在尝试修改我的提示以显示环境姓名。所以我有我的 ~/.bashrc 文件,我试图在其中编写一个受 git-prompt.sh 启发的非常简单的条件。我想要的结果如下:

user@laptop: working_dir (git_branch)
>

user@laptop: working_dir (git_branch)
(conda_env) >

当我激活环境时。我的问题是我找不到正确显示 (conda_env) 的方法。我在第二行尝试过这样的事情:

PS1="$PS1"'\n'                 # new line
    if [ ! -z "$CONDA_DEFAULT_ENV" ]
    then
        PS1="$PS1""($CONDA_DEFAULT_ENV) "
    fi
PS1="$PS1"'\[3[32m\]'       # change to green
PS1="$PS1"'> '

我也尝试了不同的条件测试,例如:

if [[ "$CONDA_DEFAULT_ENV" != "" ]]
if [ test -n "$CONDA_DEFAULT_ENV"]

和其他一些人。但我总是有问题,有时即使 $CONDA_DEFAULT_ENV 为 null 也会出现括号,有时测试似乎有效但我在最后的“>”之前仍然有一个杂散的 space (这会逻辑上来自“($CONDA_DEFAULT_ENV)”部分,意味着测试不正确)等

有谁知道为什么会发生这种情况以及如何让这个简单的条件提示起作用?

2小时前我遇到了同样的问题,终于找到解决办法了!

解决方案是将您的 if 语句封装在一个函数中,并通过字符串调用它,这样它是动态的,并且会在您更改环境时发生变化。

让我告诉你我是怎么做到的:

check_conda_env ()
{
    if [ ! -z "$CONDA_DEFAULT_ENV" ]; then
        printf "($CONDA_DEFAULT_ENV) "
    else
        printf ""
    fi
}

PS1="$PS1"'\n'                 # new line
PS1="$PS1"'$(check_conda_env)' # calls check_conda_env everytime it is printed to the screen
PS1="$PS1"'\[3[32m\]'       # change to green
PS1="$PS1"'> '

之所以有效,是因为您的字符串现在是 "dynamic",这意味着它每次打印到 check_conda_env 时调用函数屏幕.