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

时间:2018-03-13 17:26:35

标签: bash virtualenv conda

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

$ source activate my_env

(my_env) $ source deactivate

$

可以使用

关闭和打开
conda config --set changeps1 (true|false)

由于我的终端提示已经自定义,我想以不同的方式添加env信息,但不知道如何准确。

现在我在我的.bash_profile文件中使用了两个命令sacdac来激活和停用envs,因此这次业余尝试添加了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:或者是否有另一种方法可以获取当前的env-info - 为此目的 - 有用的格式?
conda info --envs返回了很多信息......

3 个答案:

答案 0 :(得分:4)

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

>>> source activate myEnv

>>> echo $CONDA_DEFAULT_ENV
myEnv

答案 1 :(得分:0)

打开文件~/.bashrc。您将看到以下部分。

# added by Anaconda3 installer
#export PATH="/home/jim/anaconda3/bin:$PATH"
. /home/jim/anaconda3/etc/profile.d/conda.sh
conda activate

因此,以上conda activate部分默认情况下正在激活base。如果您不希望在默认终端中包含(base),则将conda activate修改为conda deactivate。这奇迹般地为我工作。

答案 2 :(得分:0)

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

PS1=""

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