Search code examples
condabashps1

how to modify conda 'source activate' ps1 behavior


my current bash ps1 is as follows:

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\]$ "

However, running:

source activate <env-name-here>

by default, tells conda to prepend the env-name to my PS1:

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

Is there a way to tell conda to insert the env-name within my PS1 instead, specifically, right after the newline?


Solution

  • The simplest solution I have found is to move the newline from PS1 to PROMPT_COMMAND:

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

    This allows conda to maintain it's default PS1 behavior all while separating bash commands with newlines:

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