ディレクトリをルートディレクトリに接続すると、次のエラーが発生します。
$ ln -s ~/inbox/ /
$ ln: //: Is a directory
Bashは/を追加してディレクトリパスを自動補完します。私は脱出しようとしましたが、役に立ちませんでした。
$ ln -s ~/inbox /
それでも動作します。なぜこれですか?
答え1
存在するパス名の確認/
、後行と同等の後行を持ちます/.
。つまり、この場合は~/inbox/
同等です。~/inbox/.
したがって、コマンドはルートディレクトリから呼び出されるリンクをln
生成しようとします(驚くほど失敗します)。.
/
Zshはディレクトリを完成させた後、キーを押すと末尾をSpace削除します(そうでない場合)。 bashがこれをできるかどうかはわかりません。
答え2
これはあなたが走ってきたものですか?
Is a directory
EISDIR
オペレーティングシステムからエラーを印刷しているようです。これは2つの方法で発生する可能性があります。
ディレクトリを指す既存のシンボリックリンクを上書きしてみてください。
$ 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
?