为何双点(父目录)与bin文件夹交互时表现异常?
为什么/bin/..的行为和其他目录不同?
核心原因是**/bin是符号链接(软链接)**,而非真实的物理目录,Linux对符号链接的..解析逻辑和物理目录不一样:
先验证/bin的属性:执行
ls -ld /bin,会看到类似这样的输出:lrwxrwxrwx 1 root root 7 月 1 10:00 /bin -> usr/bin这说明/bin实际是指向/usr/bin的软链接。
当执行
ls /bin/..时,系统会直接基于符号链接的路径做解析:/bin对应/usr/bin,所以/bin/..等价于/usr/bin/..,也就是/usr目录,因此ls显示的是/usr的内容,而非根目录。关于
cd /bin/..后pwd显示/但ls输出异常的问题:
bash的cd命令会自动解析符号链接的最终物理位置,但默认的pwd显示的是逻辑路径(即从你输入的cd指令推导出来的路径),而非真实的物理路径。此时你实际处于/usr目录,但pwd显示的是逻辑上的/。这时候执行ls,自然显示的是/usr的内容。
如果你执行pwd -P,就能看到真实的物理路径/usr,这就能解释ls的输出了。当你执行
cd ../..时,从逻辑路径看是从/再退两次还是/,但实际物理路径是从/usr退到/,此时ls就会显示根目录的内容,恢复正常。
而/home、/etc、/mnt这些目录都是真实的物理目录,它们的..直接指向根目录,所以行为符合你的预期。
内容的提问来源于stack exchange,提问作者Akramat
相关产品推荐
相关产品推荐

