cd /proc/$$/root/bin
cd /bin
Après avoir exécuté la commande ls
sur les deux répertoires, j'ai constaté que le contenu des deux répertoires est identique (ce qui n'est rien d'autre qu'une liste de commandes).
Y a-t-il une raison spécifique pour que cela ait la même liste de commandes dans les deux répertoires?
/proc
est un système de fichiers "virtuel" exposant certains détails relatifs au noyau et au processus.
$$
est un variable shell donnant le PID du shell qui l'exécute.
/proc/$$/root
est un lien symbolique vers le répertoire racine tel que vu par le shell actuel. Cela pourrait changer si vous êtes chrootant .
En bref, les deux semblent identiques car ils sont le même répertoire. Si vous exécutez ls -ld /proc/$$/root
, vous verrez qu'il s'agit d'un lien symbolique vers /
, et donc /proc/$$/root/bin
et /bin
constituent le même répertoire.
C'est parce qu'ils sont, en fait, les mêmes annuaires¹:
$ test /proc/$$/root/bin -ef /bin; echo $?
0
(Le test -ef
vérifie si deux chemins se rapportent au même objet fichier.)
Il en va de même pour /proc/$$/root
et /
, car
$ readlink /proc/$$/root
/
¹ sauf si vous vous trouvez dans un environnement chroot
susceptible de diriger /proc/$$/root
vers un autre répertoire.