ディレクトリをルートにリンクすると、次のエラーが発生します。
$ ln -s ~/inbox/ /
$ ln: //: Is a directory
Bashは/を追加することにより、ディレクトリパスをオートコンプリートします。私は成功せずに逃げようとしました。
$ ln -s ~/inbox /
しかし動作します。どうしてこれなの?
pathname resolution では、末尾に/
があることは、末尾に/.
と同等です。つまり、このコンテキストでは、~/inbox/
は~/inbox/.
と同等です。 。したがって、ln
コマンドは、ルートディレクトリに.
というリンクを作成しようとしています(当然のことながら失敗します)。
Zshを押すと、末尾の/
が削除されます Space ディレクトリを完成させた後(そうしないように構成されていない限り)。これをbashで実行できるかどうかはわかりません。
それはまさにあなたが実行したものですか?
Is a directory
は、OSがEISDIR
エラーを出力しているように見えます。
ディレクトリを指す既存のシンボリックリンクを上書きしようとしています。
$ cd $(mktemp -d)
$ mkdir dir
$ ln -s dir dir # this creates dir/dir
$ ln -s dir dir # this fails, because dir/dir already exists
ln: failed to create symbolic link `dir/dir': File exists
ディレクトリへのハードリンクを作成しようとしています。
$ cd $(mktemp -d)
$ mkdir dir
$ ln dir dirlink
ln: `dir': hard link not allowed for directory
実行していたものである場合、type ln
またはalias ln
は何を出力しますか?