/Users/lukasest un chemin "absolu". Le premier /représente le répertoire racine de votre système de fichiers.
lukasest un chemin "relatif". Comme il n'est pas ancré à la racine, cela signifie "recherchez-le dans le répertoire courant ". À moins que le répertoire actuel ne soit /Users(ou un autre répertoire contenant un lukas), cela échouera.
Alors, explorons vos exemples, en supposant que vous êtes dans /Users/lukas:
$ cd Documents/
/Users/lukas/Documents
Chemin relatif donné => changez pour le répertoire "Documents" qui est à l'intérieur /Users/lukas.
$ cd /Documents
-bash: cd: /Documents: No such file or directory
Chemin absolu donné => changez de répertoire /Documents.
$ pwd
/
Cela montre que vous avez maintenant changé le répertoire de travail en répertoire racine /(bien que la cdcommande pour ce faire ne soit pas affichée).
$ cd Users
/Users
Chemin relatif donné => changez pour le répertoire "Users" qui est à l'intérieur /.
$ cd /Users
/Users
Chemin absolu donné => changez de répertoire /Users.
La clé à chaque fois est celle qui mène /. Avec lui, le chemin est absolu. Sans cela, le chemin est relatif. Cette règle est sans ambiguïté car tous les chemins absolus commencent par /(car le répertoire racine est toujours appelé /).
Voici un pseudocode décrivant vaguement cet algorithme:
MakePathAbsolute(path):
if <path> starts with '/'
return <path>
else
return <current directory>/<path>
L'argument auquel vous passez cdpasse par cet algorithme; le répertoire dans lequel vous finissez par changer est le chemin que retourne l'algorithme.
Lectures complémentaires: