Como limpar a formatação do PS1 no gnome-terminal?

Como limpar a formatação do PS1 no gnome-terminal?

Eu configurei gnome-terminalpara .bashrcter cores personalizadas:

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\]$ '

E isso significa que ao executar algo assim:

insira a descrição da imagem aqui

A saída fica assim, embora a primeira linha devesse ser branca, e era branca até que eu fiz o comando digitado também em verde:

insira a descrição da imagem aqui

Então, como posso fazer com que a cor do texto de saída não seja afetada pelo fato de eu ter definido a cor do comando como verde? Estou executando o Ubuntu GNOME 15.04 com GNOME 3.16.

Atualização de informações:

Percebi que ao executar sudo rkhunter --nocolor --updatea saída fica toda verde.

Responder1

O problema é que você está configurando o comando para verde, mas não está fechando o código de escape da cor. Portanto, todas as linhas subsequentes, incluindo a saída de quaisquer comandos que não tenham formatação própria aplicada, são mostradas nessa cor. Como solução alternativa (fonte), você pode trapimprimir o código de fechamento no sinal DEBUG. Adicione esta linha ao seu~/bashrc

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

Isso será impresso \e[0m(o que fechará o código de cores aberto). Por ser trappedado ao DEBUGsinal, ele será executado antes de qualquer comando executado. Então, entre acertar Entere o comando realmente rodar. Conforme explicado em man bash:

Se um sigspec for DEBUG, o comando arg será executado antes de cada comando simples, para comando, comando case, comando select, toda aritmética para comando e antes da execução do primeiro comando em uma função shell (veja SHELL GRAMMAR acima).

informação relacionada