创建符号链接后显示红色且指向不存在文件的原因咨询
创建符号链接后显示红色且指向不存在文件的原因咨询
嗨,我来帮你分析下这个问题~
你遇到的红色符号链接(通常这类颜色表示链接的目标文件不存在),核心原因是符号链接的相对路径解析规则:符号链接里存储的源路径,是相对于链接文件本身所在的目录来解析的,而不是你执行ln命令时的当前工作目录。
来看你执行的命令:
ln -s test/rep1/rep4/fic6 /home/user/test/lsfic6
你用了相对路径test/rep1/rep4/fic6作为目标文件的路径,当这个符号链接被创建在/home/user/test/目录后,系统会从/home/user/test/这个位置出发去寻找test/rep1/rep4/fic6,也就是实际查找的路径是/home/user/test/test/rep1/rep4/fic6——这个路径显然不存在,所以链接就变成了红色,显示目标无效。
另外你提到链接指向的是test/rep1/re4/fic6(看起来是少打了一个p?),这大概率是输入时的笔误,但核心问题还是路径解析的逻辑问题。
给你两种解决办法:
- 方法一:使用绝对路径作为源路径,这样不管符号链接放在哪个目录,都能精准指向目标文件:
ln -s /home/user/test/rep1/rep4/fic6 /home/user/test/lsfic6
- 方法二:如果想用相对路径,要确保路径是相对于链接所在目录的相对路径。你的链接在
/home/user/test/,目标文件在该目录下的rep1/rep4/里,所以正确的相对路径应该是rep1/rep4/fic6(去掉前面的test/),执行命令:
ln -s rep1/rep4/fic6 /home/user/test/lsfic6
按照上面的方法重新创建链接,就能正确指向目标文件,红色的无效提示也会消失啦~
备注:内容来源于stack exchange,提问作者Nabil Sebtaoui




