Ln
使用相對和強制標誌創建符號連結的不一致行為
我在創建符號連結時遇到問題
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. $$