web-dev-qa-db-fra.com

Pourquoi deux répertoires ont-ils le même contenu?

  1. cd /proc/$$/root/bin
  2. 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?

5
snoop

/procest 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.

20
EnzoR

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.

0
David Foerster