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时引入的。]