「シンボルリンクが多すぎます」エラーなしでシンボリックリンクを作成する

「シンボルリンクが多すぎます」エラーなしでシンボリックリンクを作成する

シンボリックリンクを作成しようとすると、これが頻繁に発生します。エラーが発生しますToo many symbolic links。これが何を意味するのか、そしてシンボリックリンクを作成したいディレクトリにあるときにのみこのエラーが発生するのはなぜですか?

たとえば、

cd /foo/bar
/foo/bar: sudo ln -s /some/dir /foo/bar

これはうまくいきます。

これによりエラーが発生します。

cd ~
~: sudo ln -s /some/dir /foo/bar

答え1

あなたの例は、/foo/barシンボリックリンクを作成する前にディレクトリに変更することを示しています。したがって、/foo/barディレクトリまたは他のディレクトリへのシンボリックリンクとしてすでに存在します。

次に、次のコマンドを実行しますln -s /some/dir /foo/bar。すでに存在するため、間違いなく失敗します。/foo/bar/some/dir/foo/bar

コマンドでファイル/ディレクトリパラメータを変更したようです。を使用してリンクを作成するには、ln -s最初のファイル/ディレクトリが存在し、2番目のファイル/ディレクトリが存在してはいけません。 (これはcpコマンドと非常によく似ています)

重要な質問では、シンボリックリンクを正常に作成するために特定の場所にいる必要はありません。このln -sコマンドは、ソースまたはターゲット(またはその両方)へのフルパスまたは相対パスを使用できます。ターゲットの親ディレクトリにリンクを作成する権限がある限り、作業ディレクトリが2つのパスのいずれかに存在しなくてもリンクを作成できます。

答え2

これは以前の使用によるものかもしれませんln。対象を台無しにした可能性があります。

たとえば、これによりエラーが発生する可能性があります。

ln -s -T aaa aaa
ln -s -t aaa bbb

または、より古く、より曖昧な形

ln -s aaa aaa
ln -s bbb aaa/

関連情報