Wie andere bereits erklärt haben, wird das Verzeichnis im untergeordneten Prozess Ihres Skripts geändert, nicht im Terminalprozess, von dem aus das Skript aufgerufen wird. Nachdem der untergeordnete Prozess gestorben ist, befinden Sie sich wieder in dem Terminal, in dem es sich befunden hat.
Mehrere Alternativen:
1. Symbolischer Link
Platzieren Sie einen Symlink in Ihrem Zuhause auf dem langen Weg, auf den Sie problemlos zugreifen möchten
$ ln -s /home/alex/Documents/A/B/C ~/pathABC
Greifen Sie dann auf das Verzeichnis zu mit:
$ cd ~/pathABC
2. Alias
Fügen Sie einen Alias in Ihre ~ / .bashrc ein:
alias pathABC="cd /home/alex/Documents/A/B/C"
(von hier )
3. Funktion
Erstellen Sie eine Funktion, die das Verzeichnis ändert. Die Funktion wird auf Ihrem Terminal ausgeführt und kann dann das Verzeichnis ändern.
(von hier )
4. Vermeiden Sie es, als Kind zu rennen
Quell dein Skript, anstatt es auszuführen. Sourcing (durchgeführt von .
oder source
) bewirkt, dass das Skript in derselben Shell ausgeführt wird, anstatt in einer eigenen Subshell.
$ . ./pathABC
(von hier und hier )
5. cd-fähige vars
Setzen Sie die cdable_vars
Option in Ihrem ~/.bashrc
und erstellen Sie eine Umgebungsvariable für das Verzeichnis:
shopt -s cdable_vars
export pathABC="/home/alex/Documents/A/B/C"
Dann können Sie verwenden cd pathABC
(von hier )