実行時(Linuxのさまざまなubuntuバリエーション):
>ln -s dir_1 symlink_dir
>ln -s dir_2 symlink_dir
失敗したとは言わずに失敗します。しかし、代わりにファイルに対して同じことを行う場合、またはオプションにvを追加すると、失敗したことがわかります。
>ln -s file_1 symlinkg_file
>ln -s file_2 symlinkg_file
または
>ln -sv dir_1 symlink_dir
>ln -sv dir_2 symlink_dir
エラーメッセージで失敗します:
ln: failed to create symbolic link
私にとって、これは非常に奇妙な行動のように思われますか?これには理由がありますか?
実際には失敗しません。それはあなたのリンクを作成しますinside指定されたディレクトリ:
% mkdir dir_1 dir_2
% ln -s dir_1 symlink_dir
% ln -s dir_2 symlink_dir
% ls -l
total 0
drwxr-xr-x 2 user group 60 Oct 16 12:47 dir_1
drwxr-xr-x 2 user group 40 Oct 16 12:47 dir_2
lrwxrwxrwx 1 user group 5 Oct 16 12:47 symlink_dir -> dir_1
% ls -l dir_1
total 0
lrwxrwxrwx 1 user group 5 Oct 16 12:47 dir_2 -> dir_2
この動作については、マンページで説明されています。
ln [OPTION]... TARGET... DIRECTORY (3rd form)
...
In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.
ただし、このリンクは正しく設定されていないため、dir_2にリンクバックできません。ただし、これも予想される動作であり、失敗することを意図したものではありません。マンページから:
シンボリックリンクは任意のテキストを保持できます。後で解決されると、相対リンクはその親ディレクトリに関連して解釈されます。
ちなみに、-sv
でも同じように動作します。 ln
の別の実装を使用している可能性があります。 -T
を使用していませんか?多分それはあなたの~/.bashrc
/~/.zshrc
/etcに設定されています。 which ln
をお試しください。