Risolto il problema con i bug di bash line wrapping e backspace su Mac OS X?


14

Quando apro Terminale (su Mac OS X 10.5.8) e digito una lunga riga di comando: testo alternativo

... il testo non passa alla riga successiva quando si avvolge: testo alternativo testo alternativo

Inoltre, a volte quando digito un comando e quindi backspace (o freccia su o ^ U): testo alternativo

... l'intera riga non viene cancellata e non posso tornare indietro oltre un certo punto: testo alternativo testo alternativo

È un bug di bash noto (su Mac OS X)? C'è una soluzione?

Aggiornamento: Juliano aveva ragione, il problema era causato dalla delimitazione errata di una sequenza di codici console nella mia variabile PS1. Mutevole:

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

... nel mio .bashrca:

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

...problema risolto.


1
+1 per le più belle schermate di uno schermo terminale che abbia mai visto.
In pausa fino a ulteriore avviso.

1
le due righe di codice che hai mostrato nel tuo aggiornamento sono identiche.
Magne

Buona cattura, @Magne. Sono passati quattro anni da quando l'ho visto, quindi non ricordo in modo specifico, ma presumo che il "prima" mancasse a \].
Daryl Spitzer,

non sono identici: il primo ha \]invece di '[`
Ohad Cohen,

Risposte:


19

Il comportamento è coerente con la presenza di codici console nel tuo prompt (per cambiare il colore, ecc.) E non la marcatura corretta in modo che Bash sappia che sono invisibili.

Prima di ogni altra cosa, fai questo:

PS1='\w\$ '

E poi riprova. Se il problema è risolto, i miei sospetti sono corretti.

Ogni sequenza di codici della console deve essere delimitata con \[e \]nella variabile PS1. Dicono a bash che qualunque cosa sia lì dentro non sposta la posizione del cursore. Leggi il manuale di bash per maggiori informazioni.


Questo era il problema. Grazie! Aggiornerò la mia domanda con i dettagli.
Daryl Spitzer,

E se non risolvesse il problema?
Levesque

3

Per aiutare a generare un prompt disinfettato, provare http://www.kirsle.net/wizards/ps1.html è davvero fantastico. Fai solo attenzione con le parentesi nel tuo prompt, cerca di sfuggirle o qualcosa del genere.


+1 Mentre la risposta di @ Juliano è tecnicamente corretta, questo link qui è ciò che imposta i tputcomandi corretti - che ha risolto newline, `` newline e altre "cronologia + backspacing" che non potevano essere corretti utilizzando altri codici ANSI.
Eric Duncan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.