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

24

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

$ source activate my_env

(my_env) $ source deactivate

$

这可以通过开关来打开和关闭

conda config --set changeps1 (true|false)

由于我的终端提示符已经自定义,我想以不同的方式添加环境信息,但不确定具体方法。

现在我正在使用两个命令sacdac在我的.bash_profile文件中激活和停用环境,因此尝试添加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) \$";

代码为何无法正常工作?我的bash知识非常基础,抱歉...

env_info始终保持为空白,无论我是否在终端中调用sacdac

问题1:为什么代码无法正常工作?

问题2:或者也许有另一种方法可以以有用的格式获取当前环境信息吗?
conda info --envs返回了太多信息...


8
请参考这里我是如何做到的:https://github.com/bryanwweber/dot-files/blob/master/macos.bash_profile#L16 你要找的环境变量是 $CONDA_DEFAULT_ENV - darthbith
2个回答

17

来自darthbith的评论中建议的方法非常有效。变量$CONDA_DEFAULT_ENV正是我正在寻找的:

>>> source activate myEnv

>>> echo $CONDA_DEFAULT_ENV
myEnv

8

补充 A.Wenn 的答案,这是我添加到自定义提示符的内容。

PS1=""

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接