Dies ist das Standardverhalten von Unix.
Der /
am Anfang des Pfads steht für das Stammverzeichnis der Festplatte (oder die Start-/oberste Ebene des Dateisystembaums). Als Documents
ist nicht von der Wurzel entfernt, /Documents
kann nicht gefunden werden.
/Users
befindet sich außerhalb des Stammverzeichnisses, sodass dieses Problem nicht auftritt.
Sie könnten cd /Users/lukas/Documents
verwenden um zu diesem Pfad zu wechseln.
Alternativ können Sie die relative Adressierung verwenden. Unix-basierte Dateisysteme haben 2 spezielle Verzeichnisse:
.
was "dieses Verzeichnis" bedeutet,..
also das übergeordnete Verzeichnis.
Wenn Sie in /Users/lukas
sind , cd ./Documents
würde Sie an die richtige Stelle bringen.
Nehmen wir an, Sie waren in /Users/Lukas/Documents
und wollte zu /Users/Janes/Documents
, könnten Sie den Befehl cd ../../Janes/Documents
eingeben - mit ..
würde Sie eine Ebene zurückbringen - Sie würden es also zweimal tun, bevor Sie in den neuen relativen Pfad gehen.
/Users/lukas
ist ein "absoluter" Pfad. Die führende /
stellt das Stammverzeichnis Ihres Dateisystems dar.
lukas
ist ein "relativer" Pfad. Da es nicht an der Wurzel verankert ist, bedeutet es "Suche im aktuellen Verzeichnis". Es sei denn, das aktuelle Verzeichnis ist /Users
(oder ein anderes Verzeichnis mit einem lukas
darin), wird dies fehlschlagen.
Sehen wir uns also Ihre Beispiele an, vorausgesetzt, Sie befinden sich in /Users/lukas
:
$ cd Documents/
/Users/lukas/Documents
Relativer Pfad angegeben => Wechsel in das Verzeichnis "Documents" innerhalb von /Users/lukas
.
$ cd /Documents
-bash: cd: /Documents: No such file or directory
Absoluter Pfad angegeben => in das Verzeichnis /Documents
wechseln .
$ pwd
/
Dies zeigt, dass Sie jetzt das Arbeitsverzeichnis in das Stammverzeichnis /
geändert haben (obwohl die cd
Befehl dazu wurde nicht angezeigt).
$ cd Users
/Users
Relativer Pfad angegeben => in das Verzeichnis "Benutzer" wechseln, das sich in /
befindet .
$ cd /Users
/Users
Absoluter Pfad angegeben => in das Verzeichnis /Users
wechseln .
Der Schlüssel ist jedes Mal das vorangestellte /
. Damit ist der Weg absolut. Ohne sie ist der Pfad relativ. Diese Regel ist eindeutig, da alle absoluten Pfade mit /
beginnen (weil das Stammverzeichnis immer /
heißt ).
Hier ist etwas Pseudocode, der diesen Algorithmus grob beschreibt:
MakePathAbsolute(path):
if <path> starts with '/'
return <path>
else
return <current directory>/<path>
Das Argument übergeben Sie an cd
geht durch diesen Algorithmus; Das Verzeichnis, in das Sie wechseln, ist der Pfad, den der Algorithmus zurückgibt.
Weiterführende Literatur:
- Tutorial zu Unix-Dateien und -Verzeichnissen
Joseph L. Zachary
"Einführung in die wissenschaftliche Programmierung"