Anaconda 环境 bash 前缀太长

Anaconda environment bash prefix too long

我在使用 -p 选项指定路径的项目文件夹中创建了一个 anaconda 环境,即不在默认 anaconda3/envs 文件夹中:

conda create -p venv

问题是,当我激活该环境时,终端中的 bash 前缀太长,即它在提示符前加上环境的整个路径:

(/path/to/the/environment/venv) user@machine: ~/path/to/environment/$

有没有办法解决这个问题,意思是缩短它或从提示中删除前缀?

我的$PS1:

\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[3[01;32m\]\u@\h\[3[00m\]:\[3[01;34m\]\w\[3[00m\]$

Conda 提示自定义

Conda v4.6.0 以来,已经有 env_prompt 配置选项来提供对 PS1 更改的自定义。这是描述:

$ conda config --describe env_prompt
# # env_prompt (str)
# #   Template for prompt modification based on the active environment.
# #   Currently supported template variables are '{prefix}', '{name}', and
# #   '{default_env}'. '{prefix}' is the absolute path to the active
# #   environment. '{name}' is the basename of the active environment
# #   prefix. '{default_env}' holds the value of '{name}' if the active
# #   environment is a conda named environment ('-n' flag), or otherwise
# #   holds the value of '{prefix}'. Templating uses python's str.format()
# #   method.
# # 
# env_prompt: '({default_env}) '

一个对您的案例有帮助的选择是只使用 {name} 变量

conda config --set env_prompt '({name}) '

这将只显示 env 的文件夹名称。例如,您的示例是

(venv) user@machine: ~/path/to/environment/$

注意,这将使 base env 处于活动状态时,提示将显示 (anaconda3) 而不是 (base);否则,其他命名的环境应该照常出现。

如果你真的受不了,你可以 运行 basename {default_env} 在未命名的环境中获得与 {name} 相同的结果,并且仍然保留 base。也就是说,

conda config --set env_prompt '($(basename {default_env})) '