我正在Windows 10上使用git bash在我的python环境中使用miniconda,并且我一直在尝试修改提示以显示环境名称。所以我有了〜/ .bashrc文件,在这里我尝试编写一个受git-prompt.sh启发的非常简单的条件。我想要的结果如下:
user@laptop: working_dir (git_branch)
>
和
user@laptop: working_dir (git_branch)
(conda_env) >
当我激活环境时。我的问题是我找不到正确显示(conda_env)的方法。我已经在第二行尝试了类似的方法:
PS1="$PS1"'\n' # new line
if [ ! -z "$CONDA_DEFAULT_ENV" ]
then
PS1="$PS1""($CONDA_DEFAULT_ENV) "
fi
PS1="$PS1"'\[\033[32m\]' # change to green
PS1="$PS1"'> '
我也尝试过其他测试,例如:
if [[ "$CONDA_DEFAULT_ENV" != "" ]]
if [ test -n "$CONDA_DEFAULT_ENV"]
和其他一些。但是我总是有问题,即使$ CONDA_DEFAULT_ENV为null,有时还是会出现括号,有时测试似乎可行,但是我在最后的“>”之前仍然有一个空格(逻辑上,它会来自于“($ CONDA_DEFAULT_ENV )“部分,表示测试不正确),等等。
有人知道为什么会发生这种情况以及如何使这个简单的条件提示起作用吗?
两个小时前我遇到了同样的问题,终于,我找到了解决方法!
解决方案是将if语句封装在一个函数中,并通过字符串调用它,这样它是动态的,并且在您更改环境时也会发生变化。
让我告诉你我是如何做到的:
check_conda_env ()
{
if [ ! -z "$CONDA_DEFAULT_ENV" ]; then
printf "($CONDA_DEFAULT_ENV) "
else
printf ""
fi
}
PS1="$PS1"'\n' # new line
PS1="$PS1"'$(check_conda_env)' # calls check_conda_env everytime it is printed to the screen
PS1="$PS1"'\[\033[32m\]' # change to green
PS1="$PS1"'> '
之所以起作用,仅仅是因为您的字符串现在是“动态的”,这意味着它每次打印到屏幕时都会调用函数check_conda_env。