/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 "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 cd
commande 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 cd
passe par cet algorithme; le répertoire dans lequel vous finissez par changer est le chemin que retourne l'algorithme.
Lectures complémentaires: