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"