これを行う適切な方法は、その-n, --no-dereferenceようなオプションを使用することです。
$ ln -snf foo2 bar
これによりln、既存のシンボリックリンクがファイルとして扱われます。それ以外の場合は、を逆参照barしfoo1、下に移動foo1して元のTARGET名前をとして使用しLINK_NAMEます。foo2そのため、foo1ディレクトリ内に作成されるシンボリックリンクになります。のマンページにlnは次のように記載されています...
-n、-非参照
LINK_NAMEがシンボリックリンクである場合、通常のファイルとして扱います
ディレクトリ
以下は、バージョン8.21と私のアーチのLinuxデスクトップ上のシェル出力であるln場合とない場合--no-dereferenceのオプションは、私はあなたがなしたのと同じ結果だ--no-dereferenceオプションを、しかし使用して--no-dereference期待通りに働いていたオプションを選択します。
$ mkdir foo1 foo2
$ ln -s foo1 bar
$ ls -l bar
lrwxrwxrwx 1 drew users 4 Sep 17 12:51 bar -> foo1
$ ln -sf foo2 bar
$ ls -l bar
lrwxrwxrwx 1 drew users 4 Sep 17 12:51 bar -> foo1
$ ls -l foo1
total 0
lrwxrwxrwx 1 drew users 4 Sep 17 12:51 foo2 -> foo2
$ ln -snf foo2 bar
$ ls -l bar
lrwxrwxrwx 1 drew users 4 Sep 17 12:52 bar -> foo2
ln --versionますか?