'..' 到底代表什么?

'..' 到底代表什么?
  1. centos版本:8.5.2111
  2. 我现在处于这个密码:/tmp/new/
  3. 我需要在 /home/chenchen/Videos/和之间创建一个软链接/tmp/softlink
  4. 这是我的命令:ln -s /home/chenchen/Videos/ ../softlink
  5. 结果:此软链接出现在/home/chenchen/softlink,但我认为它出现在/tmp/softlink
  6. 显然,' ..'代表了/home/chenchenstep.4命令中的for
  7. 但是,当我double-tab此时使用时: ln -s /home/chenchen/Videos/ ../ ,它显示了 /tmp/ 此时下的一些文件,..代表/tmp
  8. 问:在step4和step7上,为什么..几乎相同的命令有不同的含义?

答案1

这并不是..具有不同的含义,而是 shell 解释..不正确。

这里的问题是 shell 认为它知道你所在的目录,但是如果 shell 的 pwd 中的路径之一是符号链接,并且..遍历该符号链接,shell 将删除路径组件以生成新目录,但是这个实际上可能不正确,实际遍历..会得到不同的结果。

如果将内置 shell 的输出pwd与外部 .shell的输出进行比较,您可以更直接地看到这一点/bin/pwd。在bash中,您还可以使用shell内置命令pwd -P来获取真实路径。

相关内容