Wer sagt: „Mit cd
wechselt man von einem Verzeichnis ins andere!“, liegt damit zwar richtig, es ist aber nur die halbe Wahrheit, denn das Kommando kann deutlich mehr.

cd
cd steht tatsächlich kurz für „change directory“ und ist wichtig, deine Daten in einer sinnvollen Verzeichnisstruktur abzulegen.
Es ist ein builtin Kommando der bash und auch in allen anderen Shells vorhanden, mit denen ich jemals gearbeitet habe.
Vorbereitung
Für diesen Tutorialteil lege ich mir erstmal ein paar Verzeichnisse zur Demonstration an
mkdir -p ebene0/ebene1/ebene2/ebene3
Damit habe ich jetzt innerhalb von teil22 eine kleine, verschachtelte Verzeichnisstruktur.

Verzeichnis wechseln
Das was jeder kennt und kennen muss, ist, wie man von einem Verzeichnis zum anderen wechselt.
Zunächst wechseln wir nach ebene0 mit
cd ebene0
Mit pwd
(print working directory) kannst du dir jederzeit den aktuellen Pfad ausgeben lassen.

übergeordnetes Verzeichnis
Das Linux Dateisystem hat in jedem Unterverzeichnis implizit zwei spezielle Einträge im Dateibaum, nämlich . und .. Der einfache Punkt steht für das aktuelle Verzeichnis, der zweifache für das übergeordnete. Mit cd . würdest du also ins aktuelle Verzeichnis wechseln, was nur selten Sinn macht.
Mit
cd ..
wechseln wir wieder in die Hauptebene, bei mir teil22.

Vorgängerverzeichnis
Das übergeordnete Verzeichnis ist nicht unbedingt das Vorgängerverzeichnis. Wir stehen jetzt in teil22 und wechseln mit
cd ebene0/ebene1/ebene2
nach ebene2
. Wenn du jetzt cd ..
eingeben würdest, landest du in ebene1, da das das übergeordnete Verzeichnis ist. Du müsstest dies noch zweimal wiederholen, um wieder in teil22 anzukommen, Dies geht aber mit
cd -
sehr viel komfortabler. Damit kommst du direkt wieder in das Verzeichnis, in dem du vor dem letzten cd
gestanden hast.

Sprung ins Homeverzeichnis
Es kommt nicht selten vor, dass du nach getaner Arbeit in einem Unterverzeichnis wieder zurück in dein Homeverzeichnis springen willst. Dazu benutzt du cd
einfach ohne Parameter.
cd ebene0/ebene1/ebene2/ebene3
cd

Da das Homeverzeichnis in ${HOME}
definiert ist, ist cd
synonym zu cd ${HOME}
, allerdings ist der Tippaufwand deutlich geringer.
${CDPATH}
Die Variable ${CDPATH}
ist ein Feature der bash, dass meiner Beobachtung nach nur wenige benutzen, da es nur selten erwähnt wird.
Analog zu ${PATH}
kannst du in ${CDPATH}
Suchpfade für cd
definieren. Anders ausgedrückt, gibst bei cd einen Namen an, der nicht im aktuellen Verzeichnis liegt, sucht cd innerhalb der Pfade, die in ${CDPATH} definiert sind, ob er dort zu finden ist. Das wird mit einem Beispiel wohl klarer.
Ich mache erstmal ebene3 zum Arbeitsverzeichnis. Dieses ist völlig leer. Dann setze ich die CDPATH
Variable
cd ebene0/ebene1/ebene2/ebene3
export CDPATH=~/git:/etc
Jetzt kommt der Clou, mit
cd pythonkurs
Lande ich im Verzeichnis des Pythontutorials, obwohl es im aktuellen Verzeichnis nicht zu finden ist, weil cd die Verzeichnisse in ${CDPATH} durchsucht.
