Eu queria dar ao meu terminal no Ubuntu uma aparência mais pessoal, e queria mudar o texto antes do '$' ao escrever um comando.
Pelo que eu descobri isso é feito editando o arquivo .bashrc no diretório inicial, então eu fui lá e mudei
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[3[01;32m\]\u@\h\[3[00m\]:\[3[01;34m\]\w\[3[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
para
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[3[01;32m\]\u@\h\[3[00m\]:\[3[01;34m\]\w\[3[00m\]\$ '
else
PS1='\e[1;32m[\W]\$ \e[m'
fi
Isso funciona e o terminal parece do jeito que eu quero.
Mas depois de algum tempo ao digitar alguns comandos quando uso a tecla de seta para cima para acessar o histórico de comandos, as coisas ficam estranhas.
De uma linha limpa e pressionando a tecla de seta para cima funciona. Ao pressioná-lo novamente, o texto que estava na linha é limitado a aproximadamente 15 caracteres e o novo comando no histórico (que deve ser exibido) é limitado por alguns caracteres no início e eles são mesclados juntos na linha de comando.
Por exemplo meus dois comandos mais recentes são
Java Test4 words-250.txt words-250-in.txt
Javac Test4.java
Ao pressionar a tecla de seta para cima uma vez, a primeira linha é exibida, como deveria. Ao pressioná-lo pela segunda vez, isso é exibido:
Java Test4 worc Test4.java
Apesar desta saída estranha, o terminal funciona bem. Se, por exemplo, eu pressionar enter depois de fazer o acima, o Javac Test4.java será executado. Se eu tentar excluir a linha inteira usando backspace, só poderei excluir até que a linha diga
Java Test4
e se pressionar Enter depois disso, eu recebo uma nova linha vazia, como se a linha estivesse vazia ao pressionar Enter.
Tudo isso desaparece se eu redefinir o arquivo .bashrc.
Por que isso acontece e como posso corrigi-lo?