Dieser Fehler wird auf Ubuntu Launchpad und GNOME Bugzilla verfolgt.
Da mich das vor allem bei nur wenigen Verzeichnissen nervt, nutze ich folgenden einfacheren Workaround.
Angenommen, Sie haben /home/username/work
als Symlink zu /long/path/named/asdf
. Also machen Sie cd ~/work
Öffnen Sie im Gnome-Terminal eine neue Registerkarte und suchen Sie das Terminal, das den vollständigen Pfad meldet. Um dies zu beheben, fügen Sie einfach Folgendes in Ihren .bashrc
ein :
cd ${PWD/\/long\/path\/named\/asdf/$HOME\/work}
Wenn gnome-terminal eine neue Shell startet, erhält es das aktuelle Verzeichnis mit $PWD, und wenn es /long/path/named/asdf
enthält , wird diese Zeichenfolge durch $HOME/work
ersetzt , und cd
s in die resultierende Zeichenfolge. Wenn $PWD die Zeichenfolge nicht enthält, entspricht sie cd $PWD
, was nichts tut.
Ich vermute, darauf gibt es keine wirklich gute Antwort. gnome-terminal
findet bash
das aktuelle Arbeitsverzeichnis von durch Untersuchen von /proc/<pid>/cwd
, die die Symlinks erweitert hat (wahrscheinlich aus Sicherheitsgründen, wenn nichts anderes). Ich kenne keinen anderen Weg, wie ein Prozess das Arbeitsverzeichnis eines anderen Prozesses finden kann.
Als Problemumgehung gibt es einige Bash-Tricks, die Sie ausprobieren könnten, aber beachten Sie die WARNUNG unter! In .bashrc:
...
PROMPT_COMMAND='pwd >~/.bashlocal_saved_dir'
...
[ -n "$PS1" -a -f ~/.bashlocal_saved_dir ] && cd `cat ~/.bashlocal_saved_dir`
# end of .bashrc
Dies wird zwei Dinge tun. Erstens, jedes Mal, wenn bash den Prompt anzeigt, wird es zuerst sein aktuelles Arbeitsverzeichnis in die Datei .bashlocal_saved_dir
schreiben in Ihrem Home-Verzeichnis. Zweitens wechselt bash beim interaktiven Start (im Gegensatz zum Ausführen eines Skripts) in das Verzeichnis, das in derselben Datei gespeichert ist. Das bedeutet, dass beim Starten einer neuen interaktiven Bash diese im selben Verzeichnis startet wie die Bash, die zuletzt ihre Eingabeaufforderung angezeigt hat. Beachten Sie, dass Sie die Eingabetaste drücken können, damit eine Bash ihre Eingabeaufforderung erneut anzeigt und sie somit zur letzten macht. :)
WARNUNG :Dies ist ein Hack, und ich habe ihn nur bis zu dem Punkt ausprobiert, an dem ich weiß, dass er funktioniert. Denken Sie an Kaugummi und Schnürsenkel. Es kann überraschende Effekte haben und wird sicherlich nicht so sauber funktionieren wie gnome-terminal
Ansatz. Insbesondere wenn Sie viele Tabs gleichzeitig ausführen, die alle Hintergrundaufgaben erledigen, kann es sehr gut passieren, dass Sie beim Öffnen eines neuen Tabs im "falschen" Verzeichnis landen.