Das Mac OS X Lion-Terminal platziert die Eingabeaufforderung in der Mitte der PS1-Umgebung

1

Bevor ich Lion installiert habe und ein Terminalfenster öffnete, platzierte ich den Cursor wie folgt am Ende der Eingabeaufforderung:

Wed Aug 31{shirsch4@Susan-Hirschs-iMac}/projects/perl/perl/lib/Utils--><cursor>

Wenn ich jetzt ein Terminalfenster öffne, erscheint der Cursor irgendwo in der Mitte der Eingabeaufforderung wie folgt:

Wed Aug 31{shirsch4@Susan-Hirsch<cursor>-iMac}/projects/perl/perl/lib/Utils-->

Hat jemand eine Idee, wie ich das korrigieren kann?

Vielen Dank!

Wie hier angefordert ist meine Einstellung für PS1:

/etc/bashrc:PS1="\[\033[01;34m\]\d\[\033[00;36m\]{\u@\h}\[\033[00;35m\]\w\[\033[01;34m\]\[\033[001;34m\]-->"
Ennuikiller
quelle
Wie immer bei Fragen zur Eingabeaufforderung posten Sie bitte Ihren PS1-Wert oder Ihren Code (falls vorhanden), der ihn festlegt, damit wir sehen können, wie die Eingabeaufforderung aussehen soll.
Chris Seite
PS1-Einstellung oben gepostet. Vielen Dank.
Ennuikiller

Antworten:

1

Der häufigste Fehler, der dazu führen kann, ist, dass in der PS1 keine nicht druckbaren Zeichen in eckigen Klammern angegeben werden. Nicht druckbare Zeichen müssen in "\ [… \]" eingeschlossen sein, um bash anzuweisen, sie beim Messen der Länge der Eingabeaufforderung nicht zu zählen.

Zum Beispiel habe ich das in meinem ~/.bashrc, um meine Eingabeaufforderung fett zu machen:

PS1='\['$(tput bold)'\]'"$PS1"'\['$(tput sgr0)'\]'

Jede Escape-Sequenz ist in eckigen Klammern eingeschlossen. (Ich benutze es tput, um die Codes zu generieren, anstatt sie fest zu codieren, wie es viele Leute tun. Dies ist portabler und erleichtert das Lesen und Warten des Shell-Skripts.)

Die PS1, die Sie gepostet haben, scheint jedoch die richtigen eckigen Klammern zu haben. Außerdem kann ich das von Ihnen gemeldete Problem nicht reproduzieren, wenn ich meine PS1 auf Ihre PS1 eingestellt habe. (Ich benutze 10.7.1.)

Chris Page
quelle
ungerade .... kann es die Terminaleinstellungen sein?
Ennuikiller
1
Es ist sehr unwahrscheinlich, dass dies durch eine Terminal-Voreinstellung verursacht wird. (Abgesehen davon, dass Sie möglicherweise den Wert $ TERM in einen Wert ändern, der Bash oder ncurses anweist, keinen von Ihrer Eingabeaufforderung verwendeten Befehlscode zu senden.) Haben Sie versucht, das Standardprofil für die Grundeinstellungen zu verwenden? Ein wahrscheinlicherer Schuldiger ist etwas in Ihren Shell-Startdateien. Versuchen Sie, mit Shell> New Command zu starten bash --noprofile --norc, und stellen Sie dann Ihre PS1 an der Eingabeaufforderung ein und prüfen Sie, ob das gleiche Problem vorliegt.
Chris Seite
0

Fand die Antwort hier:

Im Terminal musste ich zu Preferences-> Settings-> Advanced gehen und xterm-color256 in xterm-color ändern !!

Ennuikiller
quelle
Obwohl die Umstellung auf xterm-color als Problemumgehung dienen kann, wird das Problem in der Regel nur maskiert, ohne es zu beheben. Ab Mac OS X Lion 10.7 wird die Verwendung von xterm-color mit Terminal nicht empfohlen. xterm-color repräsentiert einen älteren Zweig von Xterm, aber seit Lion ist Terminal mit modernem Xterm kompatibler. Diese Problemumgehung weist mit ziemlicher Sicherheit nur darauf hin, dass etwas Ungültiges an das Terminal gesendet wird, und das Umschalten auf xterm-color unterdrückt es irgendwie. Ich empfehle, weiterhin nach der tatsächlichen Ursache des Problems zu suchen.
Chris Seite
Die Verwendung von xterm-color deaktiviert verschiedene wünschenswerte Verhaltensweisen, wie 256 Farben, Background Color Erase (BCE) und die modernen Xterm-Codes zum Wechseln zum / vom alternativen Bildschirm, während der Inhalt erhalten bleibt.
Chris Seite
Wie ich in einem anderen Kommentar erwähnte, kann ich das Problem nicht reproduzieren, indem ich Ihre PS1-Zeichenfolge unter Lion mit TERM = xterm-256color verwende. Möglicherweise enthält eine Ihrer Shell-Konfigurationsdateien noch etwas anderes, das Ihre Eingabeaufforderung beeinträchtigt. Versuchen Sie, die Zeilen zu kommentieren, bis das Problem behoben ist, um die Quelle zu isolieren.
Chris Seite
Durchsuchen Sie Ihre Shell-Konfigurationsdateien nach Informationen, die vom Wert von abhängen $TERM. Suchen Sie nach tatsächlichen Verweisen auf $ TERM sowie nach Aufrufen von tputoder anderen Programmen, die möglicherweise von $ TERM abhängen.
Chris Seite