自定义 Bash 终端字体颜色

自定义 Bash 终端字体颜色

不久前我问过问题,关于如何自定义 bash 终端字体颜色。这个问题得到了回答,我得到了想要的颜色,使用关联由一位乐于助人的用户提供。

我正在寻找的命令是:

export PS1="\e[1;34m\u@\H : \e[m\[$(tput sgr0)\]"

这给了我所需的颜色:

user@host :

然而,使用一段时间后,我注意到我的 bash 终端在记录和访问命令历史记录时存在很多错误。线程描述了我遇到的确切问题,解决方案是“使用\[...\]长度为 0 的 PS1 部分”。

我觉得我已经尝试了 PS1 上的所有方法来实现这一点,但历史记录仍然有问题。有人能指出我遗漏了什么吗?

答案1

PS1 的这些部分的长度为 0,因为它们设置了格式(使用 ANSI 转义序列)但不产生任何其他输出:

\e[1;34m
\e[m
$(tput sgr0)

还:

  • 您可以取出,$(tput sgr0)因为\e[m它的作用完全相同。
  • 将 PS1 放在单引号中,这样其中的变量和命令就是动态的,而不是静态的。(尽管在这种情况下这并不重要。)

因此,您正在寻找这个命令:

export PS1='\[\e[1;34m\]\u@\H : \[\e[m\]'

相关内容