![处理将包添加到路径的“正确”方法](https://linux22.com/image/142612/%E5%A4%84%E7%90%86%E5%B0%86%E5%8C%85%E6%B7%BB%E5%8A%A0%E5%88%B0%E8%B7%AF%E5%BE%84%E7%9A%84%E2%80%9C%E6%AD%A3%E7%A1%AE%E2%80%9D%E6%96%B9%E6%B3%95.png)
我下载并安装了 Haskell 平台。它已安装(默认)到/usr/local/haskell/
我想将里面的二进制文件添加/usr/local/haskell/bin/
到我的路径中。但我不想(如果可能的话)改变我的道路..
这里最好的行动方案是什么?我应该将其移至haskell/bin/*
还是local/bin
将 haskell 文件夹添加到路径中是最佳实践吗?
答案1
一种相当常见的替代更新方法$PATH
是创建指向已在 下列出的二进制文件的符号链接$PATH
,例如,在 中/usr/local/bin
。
您可以通过以下方式实现:
$ cd /usr/local/bin
$ sudo ln -s ../haskell/bin/* .
(但是,在执行此操作之前,请确保检查其中的二进制文件列表/usr/local/haskell/bin/
并检查创建符号链接是否有意义。您可能还决定仅对文件的子集进行符号链接。)
你会这样做的原因之一不是想要移动二进制文件本身的原因是,很多时候,以二进制形式分发在 tarball 中的二进制文件的编写方式是,在系统中的任何位置解压时它们都可以工作。为了做到这一点,他们经常尝试检测它们的安装位置(最常见的是通过查看)。通过这样做,他们可以找到他们希望找到所需的其他库和文件的/proc/self/exe
父目录。/usr/local/haskell
创建符号链接通常不会干扰此类机制,因为它们仍然能够在 下找到实际的二进制文件/usr/local/haskell/bin
,从而成功找到安装路径。
不移动二进制文件的另一个原因是,以后如果你想卸载 Haskell,你可以简单地删除整个/usr/local/haskell
目录,而不需要记住一些二进制文件被移动到了/usr/local/bin
,即使您确实记得这一点,您也不需要回忆哪些二进制文件属于 Haskell(假设您已经使用此方法安装了多个软件包。)做如果你通过删除目录来卸载 Haskell,最终会出现一些损坏的符号链接/usr/local/bin
,但它们是无害的,并且很容易指出哪些属于 Haskell,因为它们的../haskell/bin
名称中都有,所以它们很容易也去清理。