Ich verwende OS X 10.7.5. Ich habe gerade ein Problem mit Terminal. Ich habe die Option aktiviert, neue Registerkarten im aktuellen Arbeitsverzeichnis zu öffnen. Dies funktioniert jedoch nicht wie erwartet, wenn der Pfad des aktuellen Arbeitsverzeichnisses einen oder mehrere Umlaute enthält. Zum Beispiel in einem Verzeichnis sein Uni/Semester\ 7/C++/Übung\ 2
und schlagen Cmd-T
Um einen neuen Tab zu öffnen, stelle ich mich in das Verzeichnis, das ich zuletzt gemacht habe cd
z. Uni/Semester\ 7/C++
oder so. Gleiches, wenn ich in einem Unterverzeichnis von bin Übung\ 2
.
Ein anderes Symptom (zumindest scheinen sie verwandt zu sein) besteht darin, dass beim Beenden von Terminal in einem Verzeichnis, das Umlaute enthält, beim erneuten Öffnen in meinem Home-Verzeichnis gestartet wird, nicht einmal im nächsten übergeordneten Element ohne Umlaute wie in der neuen Registerkarte.
Ich habe gelesen, dass einige Leute Probleme mit Tab-Autovervollständigung und Umlauten haben. Ich weiß nicht, es funktioniert gut, und ich weiß nicht, ob das damit zusammenhängt.
Konfigurationsmäßig habe ich die Option eingestellt Anlaufen im Einstellungen & gt; Einstellungen & gt; Schale zu /opt/local/bin/bash -l
(Da die vorinstallierte bash-Version veraltet ist, hat das Entfernen dieser Einstellung keinen Einfluss auf das Verhalten). Die Option Muscheln öffnen sich mit In den Voreinstellungen ist die Standardeinstellung, ich weiß nicht, ob dies relevant ist.
Nun die Frage: Weiß jemand, wie man Terminal mit Umlauten so arbeiten lässt, dass ich beim Öffnen einer neuen Registerkarte nicht immer zu meinem Arbeitsverzeichnis wechseln muss? Es erscheint mir komisch, dass ich der erste sein sollte, der dieses Problem hatte. Ich habe es nicht geschafft, etwas zu googeln.
BEARBEITEN : Ich habe jetzt ein Upgrade auf Yosemite durchgeführt. Das Problem besteht weiterhin. Ich kann nicht glauben, dass niemand sonst dieses Problem hat. Ich habe mich auch als Gastbenutzer angemeldet, um die Standardeinstellungen zu erhalten, und dasselbe passiert.
/etc/bashrc
Das scheint also nicht das Problem zu sein.Antworten:
Vor OS X El Capitan 10.11 wurde der Code in
/etc/bashrc
veranlasst, an jeder Eingabeaufforderung eine Escape-Sequenz zu senden, um dem Terminal mitzuteilen, welches das aktuelle Arbeitsverzeichnis ist, jedoch codiert dieser Code nur Leerzeichen, was bedeutet, dass er nicht mit Zeichen arbeitet, die keine gültigen URL-Zeichen sind. ASCII-Zeichen wie "Ü":Am 10.11 und später wurde der Code nach verschoben
/etc/bashrc_Apple_Terminal
und wurde dahingehend aktualisiert, dass alle Zeichen, die dies erfordern, in Prozent kodiert werden, sodass jetzt mit Zeichen wie "Ü" gearbeitet werden kann (Ihr Fallbeispiel funktioniert für mich am 10.11.1)[iTerm 2 liest anscheinend das Arbeitsverzeichnis aus dem Shell-Prozessstatus. Dies hat den Vorteil, dass es ohne Shell-Setup funktioniert. Es kann jedoch nicht garantiert werden, dass es korrekt ist (es gibt keinen Grund, warum das aktuelle Arbeitsverzeichnis einer Shell tatsächlich mit dem cwd übereinstimmen muss, wenn es einen Befehl ausführt, zu einem bestimmten Zeitpunkt)
ssh
oder Shells, die in Editoren oder Bildschirm-Multiplexern ausgeführt werden, und das Verzeichnis kann nicht aus Prozessen gelesen werden, die anderen Benutzern gehören, z. B. wenn Sie dies verwendensudo -s
Um eine Root-Shell zu erstellen, kann sie das Arbeitsverzeichnis nicht vom Root-Shell-Prozess lesen. Darüber hinaus enthält der Programmstatus nur eine Dateibeschreibung für das offene Verzeichnis, nicht den Pfad, den die Shell verwendet$PWD
Sie erhalten also in einigen Fällen nicht den Pfad, den Sie zum Navigieren zum aktuellen Verzeichnis verwendet haben - z. B. wenn Sie einen symbolischen Link durchlaufen haben.]quelle
Was am Ende zur Lösung meines Problems führte, war einfach, kein Terminal zu verwenden und zu wechseln iTerm . Es hat alles, was Terminal hat, außer den Bugs und das neueste Update hat einige Ärgernisse mit Yosemite beseitigt. Bislang habe ich keinen Grund gesehen, Terminal über iTerm zu wählen.
quelle