Você deve certificar-se de que os caracteres não imprimíveis no prompt estejam em colchetes com escape, caso contrário, o bash não poderá calcular o tamanho do prompt corretamente. Acho que consertei para você:
PS1='\[\e[0;32m\]$PWD\n\[\e[m\]$ '
Eu quero que meu prompt seja exibido:
diretório de trabalho atual (absoluto), colorido em verde e
em uma nova linha, o cifrão e um espaço vazio.
Estou usando essa linha em .profile
export PS1='\e[0;32m$(pwd)\n\e[m$ '
Então quando em, e. Desktop
, meu prompt é assim:
No entanto, às vezes, ao pressionar a seta para cima para executar novamente os comandos anteriores, no início do prompt aparece uma seqüência de caracteres aleatórios que parece não desaparecer, a menos que eu pressione Enter, e. g.
Eu nunca acertei o comando cd cd Desktop
. A parte mais estranha é que o backspace nem sequer exclui o primeiro dos dois comandos cd
acima!
Alguma sugestão?
Você deve certificar-se de que os caracteres não imprimíveis no prompt estejam em colchetes com escape, caso contrário, o bash não poderá calcular o tamanho do prompt corretamente. Acho que consertei para você:
PS1='\[\e[0;32m\]$PWD\n\[\e[m\]$ '
Primeiramente, um grande obrigado à @Zanna por apontar a maneira correta de fazer isso.
Para uma resposta mais completa, ampliei a solução que inclui:
a) o cwd na cor verde
b) em uma nova linha, o ramo git (se houver) em uma cor amarelada com uma estrela vermelha se o ramo estiver sujo
Para realizar b, o prompt do git aware é necessário
É algo assim como uma linha final em ~/.bashrc
export PS1='\[\e[0;32m\]$PWD\n\[\e[m\]\[\e[0;33m\]$git_branch\[\e[m\]\[$txtred\]$git_dirty\[$txtrst\]$ '
O prompt agora será expandido para sth assim se você estiver em um branch git
Tags command-line bashrc prompt .profile ps1