ln -s 创建目录的软连接失败
程序员文章站
2024-02-26 13:23:04
...
背景
今天我在尝试使用 ln -s
命令尝试创建一个目录的软连接时,发现创建了一个错误的软连接。这个软连接并没有像预期一样通过 cd
命令进入正确的路径下。
[[email protected] ~]# cd demo
[[email protected] demo]# pwd
/root/demo
[[email protected] demo]# ln -sfn code ~/code
[[email protected] demo]# cd ~
[[email protected] ~]# pwd
/root
[[email protected] ~]# cd code
-bash: cd: code: Too many levels of symbolic links
如上面所示,创建链接失败。
原因分析:
出现上述原因是由于我对于 ln -s
命令创建软链接的原理不透彻导致的,ln -s
创建软链接命令的正确用法如下:
ln -s [源路径] [目标路径]
# 其中源路径要求为绝对路径,否则会导致创建的软链接不能用,示例:
ln -s /root/demo/code ~/code
在使用 ln -s
创建软链接的时候要求源路径必需为绝对路径,否则创建好的软链接就会出现
Too many levels of symbolic links
No such file or directory
这两种错误。
Too many levels of symbolic links
原因分析
这个错误简单翻译过来就是符号链接中出现的目录层数过多,原因是由于我们在建立符号链接是源路径使用了相对路径的方式,而 linux 系统对于相对路径的计算方式是基于当前目录的路径
+相对路径
的方式计算的,而在进入这个计算得出的路径下时,发现这个路径中又包含了软链接,也就是自己包含自己
的逻辑,从而触发了递归计算。而一个没有跳出条件的递归结果就是触发路径长度限制``Too many levels of symbolic links`。
No such file or directory
原因分析
这个错误的原因就很简单了。上面说过,在计算软链接的路径时,如果源路径是一个相对路径则会基于当前路径计算绝对路径,即当前目录的路径
+相对路径
的计算结果。当这个结果路径不对时,自然就 No such file or directory
了。