如何修改conda'源激活'ps1行为

jka*_*imi 7 bash .bash-profile ps1 conda

我目前的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\]$ "
Run Code Online (Sandbox Code Playgroud)

但是,运行:

source activate <env-name-here>
Run Code Online (Sandbox Code Playgroud)

默认情况下,告诉condaenv-name将my 放在前面PS1

(<env-name-here>)
user@short-domain:fullpath$
Run Code Online (Sandbox Code Playgroud)

有没有办法告诉我在换行符后conda插入env-namePS1的代码呢?

rem*_*ram 6

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

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

  • 而不是“ CONDA_PREFIX”,我在PS1中使用了“ CONDA_PROMPT_MODIFIER”,以实现更流畅的集成。 (4认同)

jka*_*imi 5

我发现的最简单的解决方案是将换行符从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\]$ "
Run Code Online (Sandbox Code Playgroud)

这样可以condaPS1用换行符分隔bash命令的同时保持其默认行为:

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

(<env-name-here>) user@short-domain:fullpath$
Run Code Online (Sandbox Code Playgroud)