shell 修改.bashrc时PS1返回状态错误,如何解决?

bwntbbo3  于 2022-12-19  发布在  Shell
关注(0)|答案(1)|浏览(173)

我最近修改了我的.bashrc文件,以便有一个漂亮的PS1 shell 像这样:

┌──(0) [09:57] gianluca@ubuntu-[~]
└─$

问题是,在当前的配置下,无论我给予shell的输入命令是什么,返回状态((0))总是0,即使该命令返回错误消息。
完整的.bashrc文件是here,而破坏该行为的相关行如下:

...
# Virtualenv settings to correct env position on the shell
PS1_START="┌──"
export VIRTUAL_ENV_DISABLE_PROMPT=1
VENV="\$(virtualenv_info)";
PS1="${VENV}${PS1}"

# Conda env settings to correct env position on the shell
CENV="\$(condaenv_info)";
PS1="${CENV}${PS1}"
PS1="${PS1_START}${PS1}"
...

其中我使用了.bash_functions点文件中定义的这些函数:

function virtualenv_info(){
    if [[ -n "$VIRTUAL_ENV" ]]; then
        venv="${VIRTUAL_ENV##*/}"
        [[ -n "$venv" ]] && echo "($venv) "
    else
        venv=""
    fi
}

function condaenv_info(){
    if [[ -n "$CONDA_DEFAULT_ENV" ]]; then
        venv="${CONDA_DEFAULT_ENV##*/}"
        [[ -n "$venv" ]] && echo "($venv) "
    else
        venv=""
    fi
}

我需要添加这些行,以便在激活时将PS1中的环境名称保持在正确的位置,而不是PS1本身的开头。
你知道怎么帮我吗?谢谢。

k97glaaz

k97glaaz1#

好吧,我终于解决了替换这个:

...
# Virtualenv settings to correct env position on the shell
PS1_START="┌──"
export VIRTUAL_ENV_DISABLE_PROMPT=1
VENV="\$(virtualenv_info)";
PS1="${VENV}${PS1}"

# Conda env settings to correct env position on the shell
CENV="\$(condaenv_info)";
PS1="${CENV}${PS1}"
PS1="${PS1_START}${PS1}"
...

用这个

...
# Virtualenv settings to correct env position on the shell
export VIRTUAL_ENV_DISABLE_PROMPT=1
PS1='┌──(\[\033[36m\]$?\[\033[37m\]) $(env_info virtualenv)$(env_info condaenv)'$PS1
...

相关问题