Bash中PROMPT_COMMAND导致虚拟环境(env)提示符消失的修复方案咨询
修复虚拟环境提示符消失的问题
你的问题根源在于:activate脚本激活虚拟环境时,会给PS1添加(env)前缀,但你定义的__prompt_command函数每次执行都会完全重新生成并覆盖PS1,把这个前缀冲掉了。
修复方案
修改__prompt_command函数,主动检测虚拟环境是否存在,将(env)前缀加入自定义提示符中:
PROMPT_COMMAND=__prompt_command __prompt_command() { # 处理虚拟环境前缀 local venv_prefix="" if [ -n "$VIRTUAL_ENV" ]; then # 提取虚拟环境名称(取最后一段目录名),颜色可自行调整 venv_prefix="\[\e[0;31m\]($(basename "$VIRTUAL_ENV")) " fi # 构建基础提示符,先添加虚拟环境前缀 PS1="${venv_prefix}\[\e[0;32m\][\u] \[\e[0;34m\]\w/ " # 保留原Git分支检测逻辑 if git branch 2> /dev/null > /dev/null; then PS1+="\[\e[0;33m\]($(parse_git_branch)) " fi # 保留原结尾符号样式 PS1+='\[\e[01;34m\]$ \[\e[0m\]' } parse_git_branch() { git branch 2> /dev/null | grep -E "\*" | sed -E "s/\* (.*)/\1/g" }
生效步骤
- 保存修改后的
.bash_profile - 执行
source ~/.bash_profile使配置立即生效,或重新打开终端
这样激活虚拟环境后,提示符左侧会显示(env)前缀,同时保留你原本设置的Git分支、用户名、路径等自定义样式。
内容的提问来源于stack exchange,提问作者Benjamin Karsono
相关产品推荐
相关产品推荐

