> cd /tmp
> ln -s foo
> ls -alhF /tmp
lrwxrwxrwx 1 user user 3 Jul 29 14:00 foo -> foo
これはln
のバグですか、それともファイルをそれ自体にシンボリックリンクする使用例がありますか?
これはcoreutils 8.21-1ubuntu5.1
。
バグではありません。ユースケースは、ファイルを同じベース名にリンクするが別のディレクトリにある場合に使用します。
cd /tmp
ln -s /etc/passwd
ls -l passwd
lrwxrwxrwx 1 xxx xxx 11 Jul 29 09:10 passwd -> /etc/passwd
同じディレクトリにあるファイル名でこれを行うと、それ自体にリンクが作成され、あまり効果がありません。
これは、シンボリックリンクとハードリンクのどちらを使用しているかに関係なく機能します。
もちろん、見つける最も簡単な方法は、実際に試して見ることです。 2番目の引数が指定されていない場合、ln
は現在のディレクトリにオリジナルと同じ名前のリンクを作成します。
$ ln -s /etc
$ ls -l
lrwxrwxrwx 1 terdon terdon 4 Jul 29 16:09 etc -> /etc
これはman ln
でも説明されています:
2番目のフォームで、現在のディレクトリにTARGETへのリンクを作成します。
「第2の形式」とは、次のことを指します。
ln [オプション] ... TARGET(2番目の形式)