繁体   English   中英

Git Bash (Windows) 中的条件提示,带有 miniconda

[英]Conditional prompt in Git Bash (Windows), with miniconda

I am using git bash on windows 10 with miniconda for my python environments, and I've been trying to modify my prompt to show the environment name. 所以我有我的 ~/.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 )" 部分,表示测试不正确)等。

有谁知道为什么会发生这种情况以及如何让这个简单的条件提示起作用?

2小时前我遇到了同样的问题,终于,我找到了解决方案!

解决方案是将您的 if 语句封装在 function 中,并通过字符串调用它,这样它是动态的,并且在您更改环境时会发生变化。

让我告诉你我是怎么做到的:

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"'> '

这样做的原因仅仅是因为您的字符串现在是“动态的”,这意味着它每次打印到屏幕时都会调用 function check_conda_env

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM