bash 一直以来的奇怪提示符问题

用了这么多年,bash 一直有个奇怪的提示符问题(zsh 好像暂时没发现有)

只要通过PS1设置了提示符有颜色,在终端宽度不够,提示符需要换行的时候(比如进入了很多级目录的时候,或者有时你手动调整终端窗口大小以后),提示符尾端几个字符的显示就会有问题

bash-problem

PS1="\[\e[1;93m\] THIS-IS-PROMPT-123456789>\[\e[0m\]"

在网上搜索过,又问过 AI ,感觉已经尽己所能处理了非打印字符,但仍找不到解决方法

如果完全没有设置颜色,就不会出现问题
但奇怪的是,只设置一个默认颜色,也会有问题,像这样

PS1="THIS-IS-PROMPT-123456789>\[\e[m\]"

就算加了shopt -s checkwinsize也一样

甚至已经怀疑不是 bash 而是 Konsole 的问题?

有没有人能帮解答?

来个问题截图吧。

上面那个 gif 图的拖动过程不是明显可以看出问题么
光标位置会偏、最后的大于号会偏、颜色代码里的字母 m 还会冒出来

哦,我没注意到它是个 gif……看着像是 konsole 的 bug。换别的终端试试?

tmux 里面也可以复现这个问题

我想到一种可能性,bash 的版本

Leap 还在用 bash 4 ,tw 已经是 bash 5 了。其他大多数 发行版也早已经升级到 bash 5

刚刚运行个容器跑另一发行版,是 bash5,好像就没问题