解决修改 Bash Prompt 后翻阅历史命令时显示错位

在修改过PS1变量后,使用上下方向键翻阅历史命令时可能会出现命令将提示符覆盖掉的情况。

方法

将不可见字符(如 ASCII 颜色字符)用\[\]包起来。

例如:PS1=\e[32m\$\e[0m  -> PS1=\[\e[32m\]\$\[\e[0m\] 

原理

Bash 在覆盖当前行时会计算 Prompt 的长度,即使是不可见字符也会计算在内。\[\]的作用是让 Bash 不计算这部分字符的长度。

参考资料