Symlink

為什麼 。和 .. 是目錄的硬連結,而在 *nix 系統中,目錄不允許硬連結?

  • July 2, 2021

我知道硬連結和符號連結是如何工作的,我知道為什麼硬連結不能用於目錄,但在這種情況下,它是某種例外嗎?

例如我這樣做:

ls -al Documents

total 8
drwxr-xr-x  2 piotr piotr 4096 cze 28 11:19 .
drwxrwx--- 17 piotr piotr 4096 lip  2 16:41 ..

. 是指向Documents本身的硬連結,並且**..是指向我的主目錄**的硬連結,所以嘿,這是非法的

正如有人在對該問題的評論中所說,僅僅因為不允許硬連結到目錄(即通過ln命令),並不意味著它們是不可能的。超級使用者實際上可以使用命令的“-d”或“-F”選項來ln強制創建指向目錄的硬連結(儘管手冊頁說它“可能”由於文件系統限製而失敗 - 不確定是什麼差不多了,我不打算在我自己的一個系統上嘗試看看……)。

不允許硬連結到目錄,因為它們可以為試圖遍歷目錄結構的程序創建循環。在任何目錄中,.並且..分別是指向該目錄及其父目錄的硬連結 - 這些是“眾所周知的”特殊情況,任何試圖遍歷文件系統的東西都知道要解釋這一點。但是,如果您堅持不懈,從技術上講,創建指向目錄的硬連結當然是可行的——這是不可取的。

引用自:https://unix.stackexchange.com/questions/656730