「too many levels of symbolic links」というエラーメッセージについて
はじめに
僕は出会ったことはないのですが、 「too many levels of symbolic links」 というエラーメッセージに遭遇したという話を聞いて再現方法を調べてみました。
検証環境
$ uname -moi
x86_64 MacBookPro11,4 Darwin
$ bash -version | head -n 1
GNU bash, バージョン 5.0.16(1)-release (x86_64-apple-darwin18.7.0)
エラーを再現させてみる
早速再現させてみます。
通常はこんなことは起きないとは思いますが、 自分自身を参照するシンボリックリンク hoge
を作成します。
$ ln -s hoge hoge
$ ls -l
total 0
lrwxrwxrwx 1 root root 4 Apr 7 14:33 hoge -> hoge
このシンボリックリンク hoge
をフォルダとみなして、 hoge/x
というファイルを作成してみます。
$ touch hoge/x
touch: cannot touch 'hoge/x': Too many levels of symbolic links
エラーが再現しました。
touch
コマンドでなくても同じエラーメッセージが発生します。
$ echo test > hoge/y
bash: hoge/y: Too many levels of symbolic links
$ mkdir hoge/z
mkdir: cannot create directory 'hoge/z': Too many levels of symbolic links
原因は「循環したシンボリックリンク」
こちらのエラーメッセージは、シンボリックリンクの循環が原因で発生するようです。
先の例では、 hoge
シンボリックリンクは自分自身を参照している形になりますが、このようなシンボリックリンクに対してファイル(ディレクトリもLinuxではファイルです)を作成しようとした場合にエラーが発生します。
以下のような三すくみ状態のシンボリックリンクでもエラーは発生します。
$ ln -s a b
$ ln -s b c
$ ln -s c a
$ touch a/test
touch: cannot touch 'a/test': Too many levels of symbolic links
ひとこと
「too many levels of symbolic links」 というエラーメッセージにお困りの場合に参考になれば幸いです。
ディスカッション
コメント一覧
まだ、コメントがありません