Sequências não imprimíveis devem ser entre \[
e \]
. Olhando para o seu PS1 , ele tem uma sequência não fechada após \W
. Mas, a segunda entrada é redundante, assim como repete a declaração anterior "1; 34" .
\[3[01;32m\]\u:\[3[01;34m\] \W3[01;34m \$\[3[00m\]
|_____________| |_|
| |
+--- Let this apply to this as well.
Como tal, deveria ter a intenção de colorir:
\[3[1;32m\]\u:\[3[1;34m\] \W \$\[3[0m\]
|_____|
|
+---- Bold blue.
Manter o "original" também deve funcionar:
\[3[1;32m\]\u:\[3[1;34m\] \W\[3[1;34m\] \$\[3[0m\]
|_| |_|
| |
+-----------+-- Enclose in \[ \]
Editar:
A razão para o comportamento é porque bash
acredita que o prompt é mais longo do que realmente é. Como um exemplo simples, se um usar:
PS1="3[0;34m$"
1 2345678
Acredita-se que o prompt tenha 8 caracteres e não 1. Como tal, se a janela do terminal tiver 20 colunas, depois de digitar 12 caracteres, acredita-se que sejam 20 e envolvam o texto. Isso também é evidente se alguém tentar fazer backspace ou Ctrl + u . Para na coluna 9.
No entanto, ela também não inicia uma nova linha, a menos que uma esteja na última coluna. Como resultado, a primeira linha é sobrescrita.
Se continuar digitando, a linha deve passar para a próxima linha após 32 caracteres.