鍍金池/ 問答/Linux/ 符號鏈接問題

符號鏈接問題

執(zhí)行如下命令:
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

百度查看了符號鏈接(軟鏈接)的內(nèi)容后有點困惑,ln -s 建立符號鏈接 foo/testdir指向../foo,我進(jìn)入foo目錄cd testdir會進(jìn)入哪個目錄?
這么做怎么跟預(yù)期不符合??
cd testdir并沒有進(jìn)入foo文件夾,請教各位為何,在網(wǎng)上搜了下之后依然不理解。
在參考了網(wǎng)上的幾個鏈接后,我自認(rèn)為懂了符號鏈接和硬鏈接:

參考鏈接
鏈接1
鏈接2
鏈接3

后續(xù):
開始參考了Charles的答案不是很明白,后面看到@陸衛(wèi)和@Charles的評論,理解與整理如下,如果有任何疑問歡迎指出錯誤。感謝陸衛(wèi)和Charles的解答。
圖片描述
我們看到這構(gòu)成循環(huán)的符號鏈接,雖然前面的路徑顯示一直/testdir/testdir等,但實際路徑通過pwd -P可以看出一直是/root/apue.3e/filedir/foo目錄。

man pwd
-P, --physical avoid all symlinks

回答
編輯回答
夢若殤

執(zhí)行完命令后你的目錄結(jié)果大概是這樣的

t
└── foo
    ├── a
    └── testdir -> ../foo

你的軟鏈接意思是這樣的 :foo/testdir鏈接到當(dāng)前目錄的上一級目錄下的一個名為foo的目錄

可能有點繞,不過我覺得還是可以理解的。

問題:會進(jìn)入那個目錄?
答:當(dāng)前目錄foo。你按照上面的意思理一下,當(dāng)前目錄為foo,上一級目錄為t , t 目錄下一個名為foo的目錄,那不就是回來了嗎?至于為何鏈接會是相對的,因為它是成軟鏈接啊/滑稽,下面是man ln

Symbolic links can hold arbitrary text; if later resolved, a relative link is interpreted in relation to its parent directory.

2017年1月5日 04:57
編輯回答
陪她鬧

肯定是foo目錄啊。
你說不是,那你進(jìn)的是那個?
foo/testdir吧,你可以無限cd進(jìn)去N多遍,但它還是foo目錄啊,只是顯示foo/testdir/testdir/.../testdir罷了

2018年1月12日 22:33