相対フラグと強制フラグを使用してシンボリックリンクを生成するときの一貫性のない動作

相対フラグと強制フラグを使用してシンボリックリンクを生成するときの一貫性のない動作

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

このコマンドを3回目の実行でエラーを修正できます。

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

コマンドを複数回再実行すると、2 つの状態が切り替わります。なぜそうなのか本当に知りたいです。マニュアルによると、これは問題ではありません。

使用されたバージョンln(Ubuntu 14.10に付属):

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

ベストアンサー1

これはcoreutilsバージョン8.16〜8.21で発生するバグです。 8.22で修正されました。バージョン8.22のリリースノート:

ln --relative は既存のシンボリックリンクを正しく更新します。以前は、既存のリンクの逆参照パスに基づく相対リンクでした。 [このバグは、coreutils-8.16に--relativeが追加されたときに導入されました。 ]

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

おすすめ記事