Correção para quebra de linha bash e erros de exibição de retrocesso no Mac OS X?

13

Quando eu abro o Terminal (no Mac OS X 10.5.8) e digito uma longa linha de comando:

...otextonãovaiparaapróximalinhaquandoseenvolve:

Alémdisso,àsvezes,quandodigitoumcomandoedepoisretrocedo(ousetaparacimaou^U):

... a linha inteira não é apagada e não posso retroceder além de um certo ponto:

Este é um bug bash conhecido (no Mac OS X)? Existe uma correção?

Atualização: Juliano estava correto, o problema foi causado pela delimitação incorreta de um código de console sequência na minha variável PS1. Mudando:

export PS1='\[3[1;34m\]\$\]3[0m\] '

... no meu .bashrc para:

export PS1='\[3[1;34m\]\$\[3[0m\] '

... resolveu o problema.

    
por Daryl Spitzer 10.11.2009 / 20:36

2 respostas

16

O comportamento é consistente em ter códigos de console no seu prompt (para alterar a cor, etc.) e não marcá-los adequadamente, para que o bash saiba que eles são invisíveis.

Antes de mais nada, faça isso:

PS1='\w\$ '

E tente novamente. Se o problema for resolvido, minhas suspeitas estão corretas.

Cada seqüência de código do console deve ser delimitada com \[ e \] na variável PS1. Eles dizem bash que tudo o que está lá não move a posição do cursor. Leia o manual bash para mais informações.

    
por 10.11.2009 / 20:40
2

Para ajudar a gerar um prompt higienizado, tente o link que é bastante impressionante. Apenas tenha cuidado com colchetes no seu prompt, ele tenta escapar deles ou algo assim.

    
por 22.02.2013 / 17:26

Tags