MacBook下Anaconda终端提示符自定义添加conda环境信息求助
嘿,我完全懂你的困扰——自定义了终端提示符,不想让conda默认修改它,但又想随时知道当前激活的环境对吧?刚好有几个简单的办法,适合bash基础水平的你,一步步来:
先做个前置准备(可选但推荐)
首先确保conda自带的提示符修改功能是关闭的,避免和你的自定义设置冲突:
conda config --set changeps1 false
执行完这个命令,conda就不会再自动往你的提示符里加环境信息了。
方案1:直接在自定义提示符里读取conda的环境变量
conda其实会自动维护一个叫CONDA_DEFAULT_ENV的环境变量——激活环境时它会变成当前环境名,取消激活后就会清空。你只需要把这个变量的状态加到你的自定义提示符里就行。
假设你现在的提示符定义在.bash_profile里是类似这样的:
PS1="\u@\h:\w\$ "
那你可以改成下面这样:
# 先写个小函数,用来判断并返回conda环境信息 get_conda_env() { # 如果CONDA_DEFAULT_ENV不为空,就返回带括号的环境名,否则返回空 [ ! -z "$CONDA_DEFAULT_ENV" ] && echo "($CONDA_DEFAULT_ENV) " || echo "" } # 修改你的提示符,把上面的函数结果加进去 PS1="\$(get_conda_env)\u@\h:\w\$ "
这样每次终端刷新提示符的时候,都会自动检查当前有没有激活的conda环境,有就显示(环境名),没有就啥也不显示,完全不破坏你原来的提示符样式。
方案2:修改你自己的sac/dac命令,同步更新自定义变量
如果你习惯用sac和dac来激活/取消环境,也可以让这两个命令同步更新一个自定义环境变量,然后在提示符里调用它。
打开你的.bash_profile,把原来的sac和dac改成下面这样:
# 自定义sac:激活环境并更新自定义变量 sac() { conda activate "$1" # 把当前conda环境赋值给MY_CONDA_ENV export MY_CONDA_ENV="$CONDA_DEFAULT_ENV" } # 自定义dac:取消激活环境并清空变量 dac() { conda deactivate # 删掉自定义变量 unset MY_CONDA_ENV } # 修改提示符,加入自定义变量的判断 PS1='${MY_CONDA_ENV:+($MY_CONDA_ENV) }\u@\h:\w\$ '
这里${MY_CONDA_ENV:+($MY_CONDA_ENV) }是bash的参数扩展语法,意思是:如果MY_CONDA_ENV存在且不为空,就显示(环境名) ,否则显示空字符串,非常简洁。
最后一步:让修改生效
不管用哪个方案,修改完.bash_profile后,记得执行下面的命令让设置立刻生效:
source ~/.bash_profile
或者直接重启终端也可以。
内容的提问来源于stack exchange,提问作者NewNewton
相关产品推荐
相关产品推荐

