【问题标题】:how to modify conda 'source activate' ps1 behavior如何修改 conda 'source activate' ps1 行为
【发布时间】:2017-07-17 19:53:30
【问题描述】:

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

【问题讨论】:

  • 我根本不知道conda,但你不能把字符串&lt;env-name-here&gt;\n 传递给它,然后从你的PS1 中删除\n 吗?
  • @Aaron 我解释了如何完全按照您在此处描述的操作:stackoverflow.com/q/62842563。 jkarimi 似乎在问如何将&lt;env-name-here&gt; 与他的提示字符串的其余部分保持在同一行,因此在&lt;env-name-here&gt; 中添加一个尾随换行符会破坏这一点。
  • 跑题了,不过you don't need to export PS1

标签: bash conda .bash-profile ps1


【解决方案1】:

我发现的最简单的解决方案是将换行符从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$

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 我在 PS1 中使用了“CONDA_PROMPT_MODIFIER”而不是“CONDA_PREFIX”,以实现更顺畅的集成。
    • @Adriano 如果您不需要在PS1 中间插入CONDA_PROMPT_MODIFIER,(即前置仍然可以)我发布的问答更加简洁:stackoverflow.com/q/62842563
    猜你喜欢
    • 2016-04-04
    • 2016-10-23
    • 2018-09-11
    • 1970-01-01
    • 1970-01-01
    • 2021-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多