如何在 gnome-terminal 中清除 PS1 的格式?

如何在 gnome-terminal 中清除 PS1 的格式?

我已配置gnome-terminal.bashrc自定义颜色:

PS1='${debian_chroot:+($debian_chroot)}\[\033[00;37m\][\[\033[00;32m\]\t\[\033[00;37m\]] \[\033[01;34m\]\u\[\033[00;37m\]@\[\033[01;34m\]\h\[\033[00;37m\]:\[\033[01;34m\]\w\[\033[01;32m\]$ '

这意味着当执行如下操作时:

在此处输入图片描述

尽管第一行应该是白色的,但输出看起来却是这样的,并且直到我输入命令时它才变成白色,并且输入的命令也是绿色:

在此处输入图片描述

那么,如何才能使输出文本颜色不受我将命令颜色设置为绿色的影响?我正在运行带有 GNOME 3.16 的 Ubuntu GNOME 15.04。

信息更新:

我注意到运行时sudo rkhunter --nocolor --update输出全部是绿色。

答案1

问题在于,您将命令设置为绿色,但没有关闭颜色转义代码。因此,所有后续行(包括任何未应用其自身格式的命令的输出)都显示为该颜色。作为解决方法(来源),您可以trap将关闭代码打印到 DEBUG 信号。将此行添加到您的~/bashrc

trap 'printf "\e[0m" "$_"' DEBUG

这将打印\e[0m(这将关闭打开的颜色代码)。由于它是trap信号DEBUG,因此它将在您运行的任何命令之前执行。因此,在点击Enter和命令实际运行之间。如中所述man bash

如果 sigspec 是 DEBUG,则命令 arg 在每个简单命令、for 命令、case 命令、select 命令、每个 for 命令的算术之前以及在 shell 函数中执行的第一个命令之前执行(参见上面的 SHELL GRAMMAR)。

相关内容