TITLE: Python conda virtual environment in bash prompt DATE: 2019-02-28 AUTHOR: John L. Godlee ==================================================================== I was forced to use the python package manager conda for some work, as it proved to be the easiest way to install a certain python module. A nice thing about conda is the ability to set up multiple virtual environments which can each use different versions of python modules. You can set a conda virtual environment with: conda create -n envname There are also lots of other options to set such as the python version (python=3.6). Then the environment is activated with: source activate envname By default, conda puts the name of the virtual environment (envname) at the start of the PS1 bash prompt. For those of us with customised bash prompts, this can look really ugly. For instance, my prompt normally looks like this: ┏[02:17:31] johngodlee@Johns-MBP ~ [mac_master=] ┗$ But with conda's defaults it looks like this: (lidar)┏[02:17:31] johngodlee@Johns-MBP ~ [mac_master=] ┗$ It would be nice to put the environment name somewhere else in the prompt, which is what I set out to do. So the first things to do is to stop conda putting the env name at the start of the prompt. Edit ~/.condarc to include: changeps1: false Then in ~/.bash_profile (or ~/.bashrc if on Linux), add the following function above the PS1= lines: get_conda_env () { if [ ! -z "$CONDA_DEFAULT_ENV" ]; then printf -- "%s" "($CONDA_DEFAULT_ENV)" else printf -- "%s" "" fi } Then in the PS1= lines it's simple to just call the variable created by get_conda_env(): PS1='$(check_conda_env)' y bash prompt definition currently looks like this: PS1='┏' # Elbow PS1+='[\T]' # Time PS1+=' ' # Space PS1+='\u@\h' # User@hostname PS1+=' ' # Space PS1+='\[\e[31m\]\w\[\e[m\]' # current dir PS1+=' ' # Space PS1+='\[\e[96m\]$(__git_ps1 "[%s]")\[\e[m\]' # git branch PS1+=' ' # Space PS1+='\[\e[34m\]$(get_conda_env)\[\e[m\]' # conda env PS1+=' ' # Space PS1+='\n' # New line PS1+='┗' # Elbow PS1+='$' # $ PS1+=' ' # Space And looks like this: ┏[02:17:31] johngodlee@Johns-MBP ~ [mac_master=] (envname) ┗$