Ln

使用相對和強制標誌創建符號連結的不一致行為

  • March 23, 2017

我在創建符號連結時遇到問題ln,設置了相對和強制標誌。

場景如下:

$ tree
.
├── folder1
│   └── file
└── folder2

我創建連結:

$ ln -sfr folder1/file folder2
$ tree
.
├── folder1
│   └── file
└── folder2
   └── file -> ../folder1/file

這是我想要的。但是當我重新執行命令時,我不明白為什麼連結現在指向自己:

$ ln -sfr folder1/file folder2
$ tree
.
├── folder1
│   └── file
└── folder2
   └── file -> file

第三次執行命令更正錯誤:

$ ln -sfr folder1/file folder2
$ tree
.
├── folder1
│   └── file
└── folder2
   └── file -> ../folder1/file

多次重新執行命令會在兩種狀態之間切換。我真的很想知道為什麼會這樣。根據手冊,這應該沒有問題。

使用的ln版本(與 Ubuntu 14.10 一起提供):

$ ln --version
ln (GNU coreutils) 8.21
[...]

這是一個錯誤,出現在版本 8.16 到 8.21 的 coreutils 中。它已在 8.22 中修復。從版本 8.22 的發行說明中:

ln –relative 現在可以正確更新現有的符號連結。以前它基於現有連結的取消引用路徑的相對連結。

$$ This bug was introduced when –relative was added in coreutils-8.16. $$

https://savannah.gnu.org/forum/forum.php?forum_id=7815

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