为什么我的到 /usr/local/bin 的符号链接不起作用?

为什么我的到 /usr/local/bin 的符号链接不起作用?

我通过将 Julia 解压到一个文件夹中来在本地安装它。然后我尝试将可执行文件添加到,/usr/local/bin因为我不想修改$PATH

sudo ln -s bin/julia-1.5.3/bin/julia /usr/local/bin/julia

如果我现在在新 shell 窗口中执行 Julia,则会弹出以下消息:

$ julia
zsh: command not found: julia

$ ls -l /usr/local/bin/
total 12
lrwxrwxrwx 1 root root 25 Jan  1 10:08 julia -> bin/julia-1.5.3/bin/julia

显然符号链接存在,但我的 shell 却告诉我未找到命令。这里的问题是什么?

答案1

解决方案相当简单。使用绝对符号链接这里的第一个参数ln -s是一个完整路径。

sudo ln -s /home/user/bin/julia-1.5.3/bin/julia /usr/local/bin/julia

现在它正确打开并按预期执行。

第二个更复杂的解决方案是使用相对符号链接。但是它必须与将要创建符号链接的文件夹相关。因此,从/usr/local/bin1 开始必须向上移动三个文件夹/,然后下降到相应的文件夹。

sudo ln -s ../../../home/user/bin/julia-1.5.3/bin/julia /usr/local/bin/julia

更新:以下评论是正确的,我相应地编辑了答案。相对符号链接很好,存在是有充分理由的,但在这里它们没有任何意义,因为它们使路径变得非常复杂。

相关内容