如何将Python版本及pyenv虚拟环境名称添加到Bash提示符中?
配置Bash PS1提示符显示Python版本和Pyenv环境
没问题,这就帮你把Python版本、Pyenv环境信息整合到Bash提示符里,实现你想要的[3.6.5@BooksHerokuDjango ~]$格式。
步骤1:完善并整合你的自定义函数
你写的__python_prompt函数逻辑没问题,我帮你做了个小优化——把python -V的错误输出重定向到标准输出,避免某些环境下版本信息打印到stderr导致cut取不到值。把这个函数放到.bashrc里Pyenv配置代码的下方即可:
function __python_prompt { version_number=$(python -V 2>&1 | cut -d " " -f2) version_name=$(pyenv version-name) echo "${version_number}@${version_name}" }
步骤2:设置PS1变量
接下来修改PS1环境变量,把函数的输出嵌入到你想要的提示符格式中。在.bashrc末尾添加以下配置:
PS1='[$(__python_prompt) \W]\$ '
配置细节说明
$(__python_prompt):执行自定义函数,输出版本号@环境名的格式(比如3.6.5@BooksHerokuDjango)\W:显示当前工作目录的短名称(Home目录会显示~,子目录只显示最后一级名称)\$:普通用户显示$,root用户自动显示#,符合Bash的默认行为
让配置生效
保存.bashrc后,执行以下命令让配置立即生效:
source ~/.bashrc
或者直接新开一个终端窗口,就能看到符合要求的提示符了。
完整的.bashrc片段参考
把所有内容整合后,你的.bashrc相关部分应该是这样的:
export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" if command -v pyenv 1>/dev/null 2>&1; then eval "$(pyenv init -)" fi eval "$(pyenv virtualenv-init -)" export PYENV_VIRTUALENV_DISABLE_PROMPT='1' # 自定义Python提示符函数 function __python_prompt { version_number=$(python -V 2>&1 | cut -d " " -f2) version_name=$(pyenv version-name) echo "${version_number}@${version_name}" } # 设置PS1提示符 PS1='[$(__python_prompt) \W]\$ '
内容的提问来源于stack exchange,提问作者user6820969
相关产品推荐
相关产品推荐

