Bash 提示输出颜色在前两行输出后发生变化

Bash 提示输出颜色在前两行输出后发生变化

我使用以下方式自定义了 bashPS1提示符这个〜/ .bashrc文件。我似乎无法弄清楚为什么我的输出颜色在输出的前两行之后会发生变化。

bash 输出

知道可能是什么原因导致此问题吗?

答案1

问题似乎是没有转义序列来重置提示符末尾的颜色,因此命令文本也被着色,因为解释器不知道在哪里停止着色。您需要在提示符末尾附加此转义序列\[\033[0m\]。因此您的提示符序列将类似于:

"${USER_COLOR}\u${WHITE}@${SYSTEM_COLOR}\h ${CYAN}\w ${RED}"'$(rvm_prompt)'"${GREEN}"' $(__git_ps1 "(%s)") '"${WHITE} $\[\033[0m\] "

您可以将此序列与变量关联,将其添加到提示函数定义中,并像其他颜色定义一样使用它:

local RESET="\[\033[0m\]"

因此,提示将是:

"${USER_COLOR}\u${WHITE}@${SYSTEM_COLOR}\h ${CYAN}\w ${RED}"'$(rvm_prompt)'"${GREEN}"' $(__git_ps1 "(%s)") '"${WHITE} $${RESET} "

如需进一步了解,您可以查看彩色 Bash 提示符Arch Wiki 文章。

答案2

因为ls使用--color=...,并发送 esc 控制来删除行尾的颜色。

尝试一下:ls -l --color=none,字符将全部变成白色。

相关内容