为什么有两个目录具有相同的内容?

为什么有两个目录具有相同的内容?
  1. cd /proc/$$/root/bin
  2. cd /bin

在两个目录上运行ls命令后,我发现两个目录的内容相同(只不过是命令列表)。

两个目录中有相同命令列表有什么特殊原因吗?

答案1

/proc 是一个“虚拟”文件系统公开一些与内核和进程相关的细节。

$$shell 变量给出运行它的 shell 的 PID。

/proc/$$/root符号链接到当前 shell 看到的根目录。如果您chrooting

简而言之,两者看起来完全相同,因为它们同一目录。如果执行,ls -ld /proc/$$/root您将看到它是 的符号链接/,因此/proc/$$/root/bin/bin是同一目录。

答案2

这是因为它们实际上是相同的目录¹:

$ test /proc/$$/root/bin -ef /bin; echo $?
0

-ef测试检查两个路径是否引用同一个文件对象。)

/proc/$$/root对于和也同样如此/,因为

$ readlink /proc/$$/root
/

¹除非您所处的chroot环境中可能指向/proc/$$/root不同的目录。

相关内容