我已配置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)。