【问题标题】:Conditional prompt in Git Bash (Windows), with minicondaGit Bash (Windows) 中的条件提示,带有 miniconda
【发布时间】:2020-09-09 05:53:02
【问题描述】:

我在我的 python 环境中使用带有 miniconda 的 windows 10 上的 git bash,并且我一直在尝试修改我的提示符以显示环境名称。所以我有我的 ~/.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 为空,括号也会出现,有时测试似乎有效,但我在最后的“>”之前仍然有一个杂散空间(这在逻辑上来自“($CONDA_DEFAULT_ENV )" 部分,表示测试不正确)等

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

【问题讨论】:

    标签: windows git-bash prompt miniconda


    【解决方案1】:

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

    解决方案是将您的 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

    【讨论】:

      猜你喜欢
      • 2015-06-18
      • 2019-07-20
      • 2023-03-19
      • 2012-05-15
      • 1970-01-01
      • 2014-05-06
      • 2017-05-25
      • 1970-01-01
      • 2014-09-12
      相关资源
      最近更新 更多