2008-08-30 7 views
8

Mit Terminal.app auf OS X 10.5, oft sehen Sie die Befehle verstümmelt, wenn Sie eine umgekehrte Suche mit Bash. Gibt es eine Art Termcap oder einen Bash Shopt Befehl, der das beheben kann? Es ist sehr nervig.Wie funktioniert die Bash Reverse-Suche in Terminal.app, ohne dass die Ausgabe fehlerhaft ist?

Schritte zu reproduzieren: Öffnen Sie Terminal.app, reverse-Suche zu einem längeren Befehl. Hit <ctrl> -E sobald Sie den Befehl gefunden haben. Der Cursor springt zum Ende der Zeile, aber die Anzeige wird nicht aktualisiert.

Ich vermute, das ist ein Problem mit der Readline-Bibliothek unter OS X. Es ist eher ein Problem mit der Aktualisierung der Cursor-Position nach einer Suche als alles andere. Grundsätzlich neigen ctrl-a und ctrl-e dazu, die Suchausgabe zu unterbrechen.

os x terminal failure image http://involution.com/images/osxterminal.png

Im Obigen sollte der erste Teil des Befehls angezeigt werden, und die Cursor am Ende der Linie sein sollten, aber es ist nicht. Sie können buchstäblich nicht sehen, was Sie bearbeiten, wenn dies geschieht.

+0

Was ist der Wert Ihrer $ PS1 Variabile? – Milhous

Antwort

11

Ich konnte mein TERM zu Xterm anstelle von Xterm-Farbe setzen und es löst das Problem. (exportiere TERM = xterm).

+0

Ich bin gerade dabei, das auszuprobieren, und es funktioniert! – hoyhoy

1

ich nicht wiedergeben kann, trifft entweder Ctrl +E, Ctrl +A oder den Pfeiltasten aktualisiert die Befehlszeile richtig. Laufen Sie 10.5.4? Ist es vielleicht ein Fehler in früheren Versionen?

+0

Das passiert seit Tiger für mich. – hoyhoy

1

Ich habe diesen Fehler auftreten, und während ich weiß nicht, wie es zu lösen, können Sie es umgehen, indem <down><up>

+0

Down/up funktioniert. Also theoretisch könnten Sie suchen, dann drücken Sie nach unten, dann nach oben, dann Strg-e. Aber ich suche nach einem Elite-Termcap oder einem Readline-Patch, um das zu lösen. – hoyhoy

4

Drücken Sie können an diesem Beitrag aussehen sollen.

bash-prompt-in-os-x-terminal-broken

Ich hatte das gleiche Problem, und es hatte mit der PS1 Variable zu tun. Lassen Sie mich wissen, ob das hilft.

1

Nicht sicher, ob dies das Problem hier ist, aber eine sehr häufige Ursache für einen vermasselten Bildschirm in bash (mit jedem Terminal-Emulator, nicht nur Terminal.app) wird das Fenster in der Größe geändert.

Bash liest die Fenstergröße beim Start und nimmt dann an, dass sie sich nicht geändert hat. Wenn das Fenster in der Größe geändert wird, wird ein Signal an die App gesendet, die gerade von der Konsole gelesen wird. Wenn das nicht Bash ist (weil Sie zu der Zeit vielleicht einen Texteditor ausführen), dann wird bash nichts davon wissen.

Lösung in diesem Fall ist die Größe des Fensters wieder zu ändern, so dass Bash das Signal erhält und die neue Größe bemerkt.

0

Im schlimmsten Fall könnten Sie den X-Server (irgendwo unter Dienstprogramme) starten und einen echten Xterm starten.