前段时间给一个 CentOS7 机器装 zsh5.8(编译装)+python3.9 (编译装)+ohmyzsh (离线装) 然后在 source python 环境后切换 bash 总会把当前 bash 变成奇奇怪怪的显示 如:
(.pyenv) [root:~]# bash (.pyenv) [%{[]%}%B%n%b%{%}:%{[red]%}%30<...<%~%<<%{%}]%(!.#.$)
(.pyenv) ➜ ~ bash bash: git_prompt_info: command not found (.pyenv) %(?:%{%}➜ :%{%}➜ ) %{[cyan]%}%c%{%}
上面是 ohmyzsh 的 mh 主题,下面是默认 robbyrussell 主题
然后我试过换成 yum 安装的 zsh,官方脚本装 ohmyzsh 或者其他 python3.7 和 3.8 版本都有这个问题,甚至换成 CentOS8 系统,RHEL7/8 和 rocky linux 我也试过,都有这个问题
然后我换成 ubuntu18.04 和 20.04 就没有这个问题了
是不是 ohmyzsh 对 RH 系的 pyenv 有兼容问题
触发过程:登录系统,zsh ( chsh 默认) → source ~/.pyenv/bin/activate → bash
1
lululau 2021-09-08 17:26:00 +08:00
怎么看出来这是个 BUG 的呢
zsh ( chsh 默认) → source ~/.pyenv/bin/activate → (unset PS1; unset PROMPT; bash; ) 所以为什么要在 zsh 里套个 bash 呢 |
2
Usaki OP |
4
Kobayashi 2021-09-09 16:45:48 +08:00 1
git_prompt_info function 是由 omz 定义,被 robbyrussell 设置。可能是因为你 export 了 PS1 变量,CentOS 默认的 bash 配置导致切换 bash 继承了父级 PS1. (也有可能是 PROMPT 变量,在 ZSH 中 PROMPT 相当于 PS1 的别名)
可能的解决方案:取消 export PS1 和 export PROMPT,只是定义为全局变量。 不过,为什么要手动切换到 bash 呢,有这种必要吗? |