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
cd [-L|[-P [-e]] [-@]] [directory]-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.
cd /home/user/DocumentsDieser 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.
cd /etc/aptHier 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.
cd DocumentsDer 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.
cd ~Wechselt das Home-Verzeichnis.
- (Minus)
Wechselt zum vorherigen (letzten) Verzeichnis zurück.
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).
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
- cd – Bash Built-in (man7.org) — POSIX-konforme Dokumentation des cd-Built-ins
- Bash Directory Stack – GNU Bash Manual — pushd, popd und dirs im Detail
- Arch Wiki: Core utilities — Überblick über cd und verwandte Werkzeuge
Verwandte Artikel
- Linux Pfade (PATH) — Absolute und relative Pfade verstehen
- Linux Shell — Grundlagen der Kommandozeile
- cp – Dateien kopieren — Dateien und Verzeichnisse kopieren
- Linux Verzeichnisstruktur — Das FHS und wohin Dateien gehören