Der Befehl cd (kurz für “change directory”) ist einer der grundlegendsten und am häufigsten verwendeten Befehle in der Linux-Shell. Er wird verwendet, um das aktuelle Arbeitsverzeichnis zu ändern, also den Ordner, in dem man sich derzeit befindet.

Syntax

Bash
cd [-L|[-P [-e]] [-@]] [directory]
Parameter
-L

Folgt symbolischen Links, d. h., es löst symbolische Links in DIR nach der Verarbeitung von .. auf.

-P

Verwendet die physische Verzeichnisstruktur ohne symbolische Links, d. h., es löst symbolische Links in DIR vor der Verarbeitung von .. auf.

-e

In Kombination mit -P beendet cd mit einem Fehler, wenn das aktuelle Verzeichnis nicht ermittelt werden kann.

-@

Auf Systemen, die es unterstützen: Zeigt Dateien mit erweiterten Attributen als Verzeichnis an, das diese Attribute enthält.

Bash Beispiel
cd /home/user/Documents

Dieser Befehl wechselt in das Verzeichnis /home/user/Documents.

Absolute und relative Pfade

Ein Pfad kann entweder absolut oder relativ sein.

Absoluter Pfad

Ein absoluter Pfad beginnt immer mit einem / und beschreibt den Pfad vom Wurzelverzeichnis (/) aus.

Bash Beispiel
cd /etc/apt

Hier mit wechselt man direkt in das /etc/apt Verzeichnis.

Relativer Pfad

Ein relativer Pfad ist relativ zum aktuellen Verzeichnis. Wenn man sich z.B. im Verzeichnis /home/user befindet und ins Verzeichnis Documents wechseln möchte, kann man es folgendermaßen tun.

Bash Beispiel
cd Documents

Der Pfad Documents ist relativ zum aktuellen Verzeichnis.

Besondere Pfade

Es gibt einige besondere Pfade und Kürzel, die mit cd genutzt werden können.

~ (Tilde)

Die Tilde steht für das Home-Verzeichnis des aktuellen Benutzers.

Bash
cd ~

Wechselt das Home-Verzeichnis.

- (Minus)

Wechselt zum vorherigen (letzten) Verzeichnis zurück.

Bash
cd -

Wenn man sich zuerst in /var/log befindet und dann zu /etc wechselt, bringt der cd - Befehl einen wieder zurück zu /var/log.

: (Doppelpunkt)

Steht für das übergeordnete Verzeichnis (das Parent Directory).

Bash
cd ..

Wechselt eine Verzeichnisebene nach oben (höher).

. (Punkt)

Der Punkt repräsentiert das aktuelle Verzeichnis. Oft nicht direkt mit cd verwendet, aber nützlich in Kombination mit anderen Befehlen.

Häufige Stolperfallen

cd - ist kein Verlaufs-Stack.

Viele erwarten, dass cd - sie durch mehrere vorherige Verzeichnisse zurückgehen lässt wie ein Browser-Zurück-Button. Tatsächlich wechselt cd - nur genau zwischen dem aktuellen und dem letzten Verzeichnis hin und her. Wer mehr braucht, verwendet pushd und popd — die beiden bauen einen echten Verzeichnis-Stapel, mit dirs -v als Übersicht.

cd .. in einem Symlink-Verzeichnis — wo lande ich?

Wenn du per Symlink in ein tiefes Verzeichnis springst und dann cd .. verwendest, hängt das Ergebnis vom verwendeten Symlink-Modus ab. Mit der Voreinstellung -L (logisch) geht es im Symlink-Pfad eine Ebene hoch, mit -P (physisch) im tatsächlichen Dateisystempfad. Das kann zu völlig unterschiedlichen Zielverzeichnissen führen — besonders kritisch in Skripten, die mit Symlinks arbeiten.

cd ohne Argumente braucht ein gesetztes $HOME.

cd ohne Argumente wechselt ins Home-Verzeichnis des Benutzers. Dafür liest die Shell die Umgebungsvariable $HOME. Ist $HOME nicht gesetzt (kommt selten vor, z. B. in minimalen Container-Umgebungen oder bei fehlerhaften su-Aufrufen), schlägt cd mit einem Fehler fehl. Mit echo $HOME prüfst du, ob die Variable existiert, und mit export HOME=/home/benutzername setzt du sie bei Bedarf.

In gelöschte Verzeichnisse kannst du nicht mehr zurück.

Wenn du in Verzeichnis A bist, ein anderes Terminal das Verzeichnis A löscht und du dann versuchst, mit cd .. hinaus- und wieder hineinzuwechseln, wirst du scheitern — das Verzeichnis existiert nicht mehr. Der laufende Shell-Prozess hält zwar noch einen Dateideskriptor offen, aber eine neue Navigation dorthin ist unmöglich. pwd kann in diesem Fall (unreachable)/… anzeigen.

Weiterführende Ressourcen

Externe Quellen

/ Weiter

Zurück zu Dateisystem

Zur Übersicht