如何在Linux中创建指向自身的符号链接

5

有人成功创建了一个指向自身的符号链接吗?我尝试创建一个符号链接指向某个文件,然后删除实际文件并尝试链接到自身,但是出现了以下错误:

ln: creating symbolic link `********': File exists

我知道可以创建这个符号链接。

我不明白你的方法?为什么你需要这个,symlink只是文件的快捷方式,如果真正的文件被删除了,那么这个快捷方式就没有意义了。 - FZE
2
一些烦人的错误出现在某个脚本中,导致符号链接指向它本身,我想重新创建这个错误。 - itzikos
@itzikos 我一开始有些困惑,不明白你为什么会想要这样做。 :-) - Andreas Louv
1个回答

3
您可以使用ln -s创建一个指向自身的符号链接:
$ ln -s testlink testlink

$ ll testlink
lrwxrwxrwx 1 me myGroup 4 19 avr.  11:22 testlink -> testlink

然而,另一个同名文件不得事先存在:
$ touch testlink

$ln -s testlink testlink
ln: impossible de créer le lien symbolique « testlink »: File exists

测试已经存在,你只是在伪造测试。但是如果执行ln -s a b,然后删除b,再将链接创建到链接上,这有意义吗?这个人在问这个问题。 - FZE
据我所知,创建的链接是没有意义的,但仍然可以这样做,这是OP要求的。我猜他已经有了一个同名的文件。 - Aaron
我不确定,但可能是一个bug,或者只是为了一个低级别的解决方法而存在。当你尝试用cat打开文件时,cat: a: Too many levels of symbolic links会自然地重定向到它自己,我检查了strace输出,无论是链接创建自身还是基于真实文件创建的链接,没有任何区别,相同的代码对它们都有效。 - FZE
我不确定你期望什么?当cat尝试打开文件时,它会看到一个链接并跟随它。在其后面还有一个链接,它也会跟随。再次,再次,等等。所以是的,对我来说,“符号链接级别太多”似乎很合适。如果你想查看链接的内容而不是它指向的文件,可以使用readlink(或ls -l)。 - Aaron

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接