CentOS配置PS1自定义提示符后长命令无法自动换行如何解决
PS1配置颜色后长命令无法自动换行的解决方案
问题根本原因
Bash计算提示符显示长度时,默认会将所有字符计入可打印长度,而ANSI颜色转义序列属于不可打印的控制字符,未做特殊标记会导致Bash错误计算行宽,最终出现长命令占满行后覆盖当前行内容的问题。
正确配置方法
将所有颜色控制类的ANSI转义序列用\[和\]包裹,标记这部分内容为不可打印字符,不计入提示符长度,你需要的蓝色提示符正确配置如下:
PS1="\[\e[0;34m\][\u@\h \W]$ \[\e[m\]"
生效操作
- 编辑
/etc/bashrc,将上述配置替换你之前设置的PS1值 - 执行
source /etc/bashrc让配置在当前会话立即生效,后续新打开的终端会话会自动加载该配置
配置说明
\[:Bash内置标记,代表后续字符为非打印控制字符,不计入提示符显示宽度\e[0;34m:蓝色字体的ANSI控制码,实现提示符蓝色效果\]:非打印控制字符结束标记\e[m:重置终端颜色为默认值的ANSI控制码,避免后续命令输出也变为蓝色,同样需要用\[和\]包裹
如果不需要全局生效仅针对当前用户设置,可以将上述PS1配置写入~/.bashrc文件即可。
内容的提问来源于stack exchange,提问作者Lake_Lagunita
相关产品推荐
相关产品推荐

