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

how to modify conda 'source activate' ps1 behavior

我目前的bashps1如下:

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 在我的 PS1 中插入 env-name 而不是,特别是在换行符之后?

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

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

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

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

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

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

这类似于virtualenv,如果设置了$VIRTUAL_ENV_DISABLE_PROMPT,它不会更新提示,所以你可以自己打印$(basename "$VIRTUAL_ENV")