
Estou na nova instalação do Lubuntu 14.04. Estou usando o LXTerminal e este é o prompt que estou configurando através do arquivo .bashrc:
export PS1="\e[0;36m$ \w \e[m"
Suponha que eu insira um comando com até 15 caracteres (e execute para que ele seja registrado no histórico) (não importa "comando não encontrado"):
$ ~ 012345678901234
012345678901234: command not found
Agora, se eu pressionar a seta para cima, recebo meu comando de volta:
$ ~ 012345678901234
E se eu pressionar a seta para baixo, voltarei ao prompt simples:
$ ~
O PROBLEMA O problema começa se eu tiver 16 ou mais caracteres para executar:
$ ~ 0123456789012345
0123456789012345: command not found
Agora, quando pressiono a seta para cima, recebo o comando anterior perfeitamente:
$ ~ 0123456789012345
Pressionar a seta para baixo não me leva de volta ao prompt, de alguma forma memoriza 10 caracteres do primeiro comando com mais de 16 caracteres em meu histórico e o exibe até que qualquer outra coisa seja executada. Basicamente, torna-se meu prompt padrão por enquanto.
$ ~ 0123456789
Agora posso pressionar Enter para me livrar dele ou posso executar qualquer outro comando. A título de exemplo isto:
$ ~ 0123456789ls
Desktop Documents Downloads Music Pictures Public Templates Videos
O que posso fazer para consertar isso? Não é grande coisa, mas é bastante chato.
Responder1
Você precisa agrupar códigos de cores \[
e\]
PS1='\[\e[0;36m\]$ \w \[\e[m\]'
Além disso, o PS1 é relevante apenas para o seu shell interativo, você não precisa exportá-lo para processos filhos.