如何修改conda'source activate'ps1行为

时间:2017-02-27 09:12:37

标签: bash conda .bash-profile ps1

我当前的bash ps1如下:

bldred='\e[1;31m' # Red
bldcyn='\e[1;36m' # Cyan
bldwht='\e[1;37m' # White
txtrst='\e[0m'    # Text Reset - Useful for avoiding color bleed

export PS1="\n\[$bldred\]\u\[$txtrst\]@\[$bldwht\]\h\[$txtrst\]:\[$bldcyn\]\w\[$txtrst\]$ "

然而,运行:

source activate <env-name-here>

默认情况下,告诉condaenv-name添加到我的PS1

(<env-name-here>)
user@short-domain:fullpath$

有没有办法告诉conda在我的env-name中插入PS1,具体来说就是在换行符之后?

2 个答案:

答案 0 :(得分:5)

Conda有一个禁用更改提示的设置:changeps1: False (in ~/.condarc)。然后,您可以自己添加($(basename "$CONDA_PREFIX"))。

这类似于virtualenv,如果设置$VIRTUAL_ENV_DISABLE_PROMPT则不会更新提示,因此您可以自己打印$(basename "$VIRTUAL_ENV")

答案 1 :(得分:3)

我找到的最简单的解决方案是将换行符从PS1移到PROMPT_COMMAND

bldred='\e[1;31m' # Red
bldcyn='\e[1;36m' # Cyan
bldwht='\e[1;37m' # White
txtrst='\e[0m'    # Text Reset - Useful for avoiding color bleed

PROMPT_COMMAND="printf '\n'"
export PS1="\[$bldred\]\u\[$txtrst\]@\[$bldwht\]\h\[$txtrst\]:\[$bldcyn\]\w\[$txtrst\]$ "

这允许conda在使用换行符分隔bash命令时保持其默认PS1行为:

user@short-domain:fullpath$ source activate <env-name-here>

(<env-name-here>) user@short-domain:fullpath$