C'est le comportement standard d'Unix.
Le /
au début du chemin représente la racine du disque (ou le niveau de départ/supérieur de l'arborescence du système de fichiers). Comme Documents
n'est pas hors de la racine, /Documents
introuvable.
/Users
est en dehors du répertoire racine, donc ce problème ne se produit pas.
Vous pouvez utiliser cd /Users/lukas/Documents
pour passer à ce chemin.
Alternativement, vous pouvez utiliser l'adressage relatif. Les systèmes de fichiers basés sur Unix ont 2 répertoires spéciaux :
.
qui signifie "ce répertoire",..
ce qui signifie le répertoire parent.
Si vous êtes en /Users/lukas
, cd ./Documents
vous emmènerait au bon endroit.
Supposons que vous étiez en /Users/Lukas/Documents
et je voulais aller au /Users/Janes/Documents
, vous pouvez émettre une commande cd ../../Janes/Documents
- en utilisant ..
vous ramènerait d'un niveau en arrière - vous le feriez donc deux fois, avant d'entrer dans le nouveau chemin relatif.
/Users/lukas
est un chemin "absolu". Le premier /
représente le répertoire racine de votre système de fichiers.
lukas
est un chemin "relatif". Comme il n'est pas ancré à la racine, cela signifie "chercher ceci dans le courant répertoire". Sauf si le répertoire courant est /Users
(ou un autre répertoire avec un lukas
dedans), cela échouera.
Alors, explorons vos exemples, en supposant que vous êtes en /Users/lukas
:
$ cd Documents/
/Users/lukas/Documents
Chemin relatif donné => passer au répertoire "Documents" qui se trouve à l'intérieur de /Users/lukas
.
$ cd /Documents
-bash: cd: /Documents: No such file or directory
Chemin absolu donné => passer au répertoire /Documents
.
$ pwd
/
Cela montre que vous avez maintenant remplacé le répertoire de travail par le répertoire racine, /
(bien que le cd
la commande pour ce faire n'a pas été affichée).
$ cd Users
/Users
Chemin relatif donné => passer au répertoire "Users" qui se trouve à l'intérieur de /
.
$ cd /Users
/Users
Chemin absolu donné => passer au répertoire /Users
.
La clé à chaque fois est celle qui précède /
. Avec lui, le chemin est absolu. Sans elle, le chemin est relatif. Cette règle est sans ambiguïté car tous les chemins absolus commencent par /
(car le répertoire racine s'appelle toujours /
).
Voici un pseudo-code décrivant vaguement cet algorithme :
MakePathAbsolute(path):
if <path> starts with '/'
return <path>
else
return <current directory>/<path>
L'argument que vous passez à cd
passe par cet algorithme ; le répertoire vers lequel vous finissez par changer est le chemin renvoyé par l'algorithme.
Lectures complémentaires :
- Tutoriel sur les fichiers et répertoires Unix
Joseph L. Zachary
"Introduction à la programmation scientifique"