如果我想创建符号链接,这种情况经常发生:我收到错误Too many symbolic links
。这是什么意思以及为什么只有当我位于要创建符号链接的目录中时才能解决此错误?
例如:
cd /foo/bar
/foo/bar: sudo ln -s /some/dir /foo/bar
这有效。
这给了我错误:
cd ~
~: sudo ln -s /some/dir /foo/bar
答案1
您的示例显示您/foo/bar
在尝试创建符号链接之前更改到该目录。因此/foo/bar
已经存在,作为目录或到另一个目录的符号链接。
然后您的命令: ln -s /some/dir /foo/bar
尝试创建/foo/bar
为/some/dir
.这一定会失败,因为/foo/bar
已经存在了。
看来您在命令中交换了文件/目录参数。要使用 来创建链接ln -s
,第一个文件/目录必须存在,而第二个文件/目录必须不存在。 (这很像 cp 命令)
对于您的核心问题,您不必位于任何特定位置即可成功创建符号链接。该ln -s
命令可以采用源或目标(或两者)的完整路径,也可以采用相对路径。只要您有权在目标的父目录中创建链接,您就可以在工作目录不在任一路径中的情况下创建链接。
答案2
这可能是由于较早使用ln
.你可能搞乱了目标。
例如这会导致错误。
ln -s -T aaa aaa
ln -s -t aaa bbb
或者以更含糊的旧形式
ln -s aaa aaa
ln -s bbb aaa/