使用相对和强制标志创建符号链接的行为不一致

使用相对和强制标志创建符号链接的行为不一致

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
[...]

答案1

这是一个错误,出现在版本 8.16 到 8.21 的 coreutils 中。 8.22 中已修复。来自 8.22 版本的发行说明:

ln --relative 现在可以正确更新现有的符号链接。以前,它基于现有链接的取消引用路径的相对链接。 [这个bug是在coreutils-8.16中添加--relative时引入的。]

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

相关内容