Um das Wechseln zwischen häufig genutzen Verzeichnissen zu vereinfachen, bietet die Bash-Shell (wie auch ihre Kollegen Zsh und Tcsh) einen Directory Stack. Dabei wechselt der Befehl "pushd" in ein Verzeichnis und legt es auf den Stack. "popd" entfernt das oberste Elemente wieder und wechselt in das darunterlegende, nun neue oberste Verzeichniselement.
Wer sich häufig in den gleichen Verzeichnissen bewegt, wird sich vielleicht wünschen, die am häufigsten verwendeten Verzeichnisse dauerhaft abzuspeichern. Das lässt sich leicht bewerkstelligen, indem man beim Ausloggen den Stack in einer Datei speichert und beim Einloggen wiederherstellt. Für Befehle, die die Shell vor dem Ausloggen ausführt, bietet die Bash die Datei ".bash_logout". Fürs Einloggen gibt es etwa die Datei ".bash_profile" im Home-Verzeichnis. In die Logout-Datei gehören dann die folgenden Zeilen:
popd -n 0 dirs -l -p > ~/.dirstack.txt
Die erste Zeile ist quasi ein Workaround für ein Problem, das sonst auftritt. Es löscht immer das erste Element des Stacks, das beim Einloggen automatisch auf das aktuelle Verzeichnis gesetzt wird. Ohne die Zeile würden sich hier die Einträge des Home-Verzeichnisses bei jedem Ein- und Ausloggen duplizieren. Die zweite Zeile schreibt den Stack zeilenweise in die Datei "~/.dirstack.txt".
Wiederherstellen lässt sich der Verzeichnis-Stack mit einer Zeile in ".bash_profile":
for d in $(tac ~/.dirstack.txt); do pushd "$d" > /dev/null; done
Die Zeilen lassen sich natürlich beliebig modifizieren. Zum Beispiel könnte man mit If-Abfragen bestimmte Verzeichnisse ausfiltern, den automatischen Wechsel in die Verzeichnisse unterdrücken ("pushd -n") oder den Stack auf ganz andere Weise verwalten.