执行如下命令:
mkdir foo
touch foo/a
ln -s ../foo foo/testdir
ls -l foo
total 0
-rw-r--r-- 1 root root 0 Dec 3 17:07 a
lrwxrwxrwx 1 root root 6 Dec 3 17:08 testdir -> ../foo
百度查看了符号链接(软链接)的内容后有点困惑,ln -s 建立符号链接 foo/testdir指向../foo,我进入foo目录cd testdir会进入哪个目录?
这么做怎么跟预期不符合??
cd testdir并没有进入foo文件夹,请教各位为何,在网上搜了下之后依然不理解。
在参考了网上的几个链接后,我自认为懂了符号链接和硬链接:
后续:
开始参考了Charles的答案不是很明白,后面看到@陆卫和@Charles的评论,理解与整理如下,如果有任何疑问欢迎指出错误。感谢陆卫和Charles的解答。
我们看到这构成循环的符号链接,虽然前面的路径显示一直/testdir/testdir等,但实际路径通过pwd -P可以看出一直是/root/apue.3e/filedir/foo目录。
man pwd
-P, --physical avoid all symlinks
肯定是foo目录啊。
你说不是,那你进的是那个?
是
foo/testdir
吧,你可以无限cd进去N多遍,但它还是foo目录啊,只是显示foo/testdir/testdir/.../testdir
罢了