今天在建立网易云音乐的软链接时,出现了如下问题:
如下图运行指令:
deadpool@deadpool-K53SD:/usr/bin$ ln -s netease-cloud-music ~/CloudMusic2.symbol
及
进入/home/deadpool:
查看软链接建立情况:deadpool@deadpool-K53SD:~$ file CloudMusic2.symbol
报错如下图:CloudMusic2.symbol: broken symbolic link to netease-cloud-music
一开始时候是以为软链接的权限问题,因为/usr/bin为root权限,在更改/usr权限为chmod 777 /usr后,建立软链接仍然出现同样错误。
于是怀疑可能是因为上述命令~的原因,在建立软链接时候~没有转换为绝对路径的问题。
于是这次进入/home/deadpool下建立软链接:deadpool@deadpool-K53SD:~$ ln -s /usr/bin/netease-cloud-music CloudMusic3.symbol
file CloudMusic3.symbol时候建立成功。
那是不是因为~的原因呢?继续进行实验:
建立变量pathHome=/home/deadpool
运行命令:deadpool@deadpool-K53SD:/usr/bin$ ln -s netease-cloud-music $pathHome/CloudMusic5.symbol
查看结果:deadpool@deadpool-K53SD:~$ file CloudMusic5.symbol
CloudMusic5.symbol: broken symbolic link to netease-cloud-music
实验到这里基本认定是变零$pathHome或者~在路径解析时候出现错误,导致建立的软链接文件。
可是以上操作都是在/usr/bin下的操作,虽然之前将这个目录的权限都改为777后仍然不行,但还是觉得应该在/home/deadpool下重新试一遍
进入/home/deadpool重复 ~和$pathHome建立软链接文件,如下图发现建立成功了!?
这样总结来并不是变量的问题???也就是$pathHome ~是完全没有问题的?是因为在/usr/bin 下的运行ln会失败,在/home/deadpool下成功?
为了排除~ 和变量的影响,这次在/usr/bin下用绝对路径试一下,发现还是会失败,应该就是路径的原因:
苦恼。。。
又把权限什么的换成777模式,重新试了一遍还是不行:
所以这个问题与权限无关,也与~ $pathHome无关,只是因为路径不同,软链接就建立不成功?看了下晚上的一些介绍:
"软链接克服了硬链接的不足,没有任何文件系统的限制,任何用户可以创建指向目录的符号链接。因而现在更为广泛使用,它具有更大的灵活性,甚至可以跨越不同机器、不同网络对文件进行链接。"
"建立软链接就是建立了一个新文件。当访问链接文件时,系统就会发现他是个链接文件,它读取链接文件找到真正要访问的文件。
在不同系统之间建立软链接、对目录建立链接,这里就不举例了"
来自http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/10/05/2199534.html
其他关于软链接的文章:http://blog.csdn.net/xiexbb/article/details/1782764
http://blog.csdn.net/donahue_ldz/article/details/15813131
因此即使/ 与 /home不再一个文件系统软链接应该也能建立。因此这到底是什么原因?