关于 RH 系+ Python 环境+ohmyzsh 的 BUG

2021-09-08 15:22:09 +08:00
 Usaki

前段时间给一个 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

1436 次点击
所在节点    Linux
4 条回复
lululau
2021-09-08 17:26:00 +08:00
怎么看出来这是个 BUG 的呢

zsh ( chsh 默认) → source ~/.pyenv/bin/activate → (unset PS1; unset PROMPT; bash; )

所以为什么要在 zsh 里套个 bash 呢
Usaki
2021-09-09 10:23:30 +08:00
@lululau 我换了个方法,先 source ~/.pyenv/bin/activate 再 zsh,然后切换 bash 就没问题了

有时候也要用回 bash~
Usaki
2021-09-09 10:24:13 +08:00
@lululau 但是 ubuntu 和 debian 切换的时候都有没有出现奇怪字符的问题
Kobayashi
2021-09-09 16:45:48 +08:00
git_prompt_info function 是由 omz 定义,被 robbyrussell 设置。可能是因为你 export 了 PS1 变量,CentOS 默认的 bash 配置导致切换 bash 继承了父级 PS1. (也有可能是 PROMPT 变量,在 ZSH 中 PROMPT 相当于 PS1 的别名)

可能的解决方案:取消 export PS1 和 export PROMPT,只是定义为全局变量。

不过,为什么要手动切换到 bash 呢,有这种必要吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/800647

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX