As cores de saída do prompt do Bash mudam após as primeiras 2 linhas de saída

1

Eu personalizei o prompt do bash PS1 com este arquivo ~ / .bashrc . Não consigo descobrir por que minhas cores de saída mudam depois das duas primeiras linhas de saída.

Alguma ideia do que poderia estar causando o problema?

    
por Dan McClain 15.01.2012 / 15:50

2 respostas

2

O problema parece ser que não há uma seqüência de escape para redefinir as cores no final do prompt, portanto o texto do comando também é colorido porque o interpretador não sabe onde parar de colorir. Você precisa anexar esta sequência de escape no final do seu prompt \[3[0m\] . Então, sua sequência de prompt seria algo como:

"${USER_COLOR}\u${WHITE}@${SYSTEM_COLOR}\h ${CYAN}\w ${RED}"'$(rvm_prompt)'"${GREEN}"' $(__git_ps1 "(%s)") '"${WHITE} $\[3[0m\] "

Você pode associar essa sequência a uma variável, adicioná-la à definição da função de prompt e usá-la como nas outras definições de cor:

local RESET="\[3[0m\]"

Assim, o prompt seria:

"${USER_COLOR}\u${WHITE}@${SYSTEM_COLOR}\h ${CYAN}\w ${RED}"'$(rvm_prompt)'"${GREEN}"' $(__git_ps1 "(%s)") '"${WHITE} $${RESET} "

Para ler mais, confira o artigo da Solicitação de bash de cor do Arch Wiki.

    
por 15.01.2012 / 17:58
1

Porque ls está usando --color=... e enviando controles esc para remover cores no final da linha.

tente: ls -l --color=none , os caracteres serão todos brancos.

    
por 15.01.2012 / 16:38