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

4 colors command-line customization 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\]$ '
Run Code Online (Sandbox Code Playgroud)

这意味着当执行这样的事情时:

在此处输入图片说明

即使第一行应该是白色的,输出看起来也像这样,并且在我输入的命令也是绿色之前是白色的:

在此处输入图片说明

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

信息更新:

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

ter*_*don 8

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

trap 'printf "\e[0m" "$_"' DEBUG
Run Code Online (Sandbox Code Playgroud)

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

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