Você perdeu um \[
(aquele após \w
), tente isto:
PS1='${debian_chroot:+($debian_chroot)}\[3[01;32m\]\u@\h\[3[00m\]:\[3[01;34m\]\w\[3[31;40m\]$(__git_ps1 "[%s]")\[3[00m\]\$ '
Estou usando o Ubuntu (10.04) com o bash e estou me deparando com um problema estranho. Depois de usar a seta para cima para voltar ao meu histórico de comandos e voltar a um dos comandos mais longos (ou seja, um com caracteres suficientes para envolver na tela), mas continue rolando para frente ou para trás, o primeiro 8 ou 9 caracteres desse longo comando aparecem na minha linha de entrada.
Esses personagens não têm nenhum impacto em qualquer comando que eu eventualmente digite, mas às vezes é difícil descobrir o que estou tentando digitar.
Parece algo assim primeiro:
name@machine:~$
Então se torna isso:
name@machine:~$ scp -i /h
depois de voltar para um dos meus longos comandos scp
. Se eu entro em um comando, assim:
name@machine:~$ scp -i /hls -l
executa o comando: ls -l
Editado para adicionar o valor de PS1 no meu ~ / .bashrc
PS1='${debian_chroot:+($debian_chroot)}\[3[01;32m\]\u@\h\[3[00m\]:\[3[01;34m\]\w3[31;40m\]$(__git_ps1 "[%s]")\[3[00m\]\$ '
Editado novamente para adicionar o valor de echo $PS1
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[3[01;32m\]\u@\h\[3[00m\]:\[3[01;34m\]\w3[31;40m\]$(__git_ps1 "[%s]")\[3[00m\]\$
O valor da variável PS1
contém alguns caracteres não imprimíveis, como sequências, para definir cores. Eles precisam ser agrupados em \[
e \]
, para que não sejam contados quando o Bash calcular onde exibir as coisas e movê-las quando você fizer coisas como percorrer os comandos anteriores. Se você mostrar seu PS1
, posso ser mais específico.
Quando isso acontece:
Tags command-line bash shell ubuntu