将conda环境信息添加到终端提示

A.W*_*enn 9 bash virtualenv conda

(我在MacBook上使用anaconda)
默认情况下,conda将环境信息添加到comand提示符中,如下所示:

$ source activate my_env

(my_env) $ source deactivate

$
Run Code Online (Sandbox Code Playgroud)

可以使用

conda config --set changeps1 (true|false)
Run Code Online (Sandbox Code Playgroud)

由于我的终端提示已经过自定义,因此我想以其他方式添加环境信息,但不知道具体如何。

现在,我正在使用这两个命令,sac并且dac在.bash_profile文件中使用它来激活和停用env,因此,我进行了如下业余尝试env_var

env_var=""

#activate env (default env = my_env)
sac() {

    if [ -z $1 ];
    then
        ENV="my_env"
    else
        ENV="${1}"
    fi

    source activate ${ENV}

    env_var="${ENV}"
}

#deactivate env
dac() {
    source deactivate
    env_var=""
}

env_info() {
    if [[ ${env_var} == "" ]]
    then
        echo ""
    else
        echo "in ${env_var}"
    fi
}

PS1="\u "
PS1+="$(env_info) \$";
Run Code Online (Sandbox Code Playgroud)

这是行不通的(我的bash知识仅是基本的对不起...)。 无论我打电话还是在航站楼内,env_info始终都停留。""sacdac

问题1:为什么代码不起作用?

问题2:还是有另一种方法可以获取有用的格式的当前环境信息?
conda info --envs返回很多信息...

A.W*_*enn 8

达思比特评论中建议的方法效果很好。该变量$CONDA_DEFAULT_ENV正是我要寻找的:

>>> source activate myEnv

>>> echo $CONDA_DEFAULT_ENV
myEnv
Run Code Online (Sandbox Code Playgroud)


ams*_*ams 8

要添加到A.Wenn的答案,这是我添加到自定义提示中的内容

PS1=""

# Add conda environment to prompt
if [ ! -z "$CONDA_DEFAULT_ENV" ]
then
    PS1+="($CONDA_DEFAULT_ENV) "
fi
Run Code Online (Sandbox Code Playgroud)