如果我希望无论当前目录如何都能够运行给定程序,我该怎么办?我应该在文件夹中创建一个指向该程序的符号链接吗/bin
?
答案1
如果您只是export PATH=$PATH:</path/to/file>
在命令行中键入,它只会持续整个会话时间。
如果您想永久更改它,请添加export PATH=$PATH:</path/to/file>
到 ~/.bashrc 文件中(仅在最后即可)。
答案2
简而言之,要运行该程序,无论您的目录是什么,您都需要在搜索路径中包含该程序的目录。该问题可以通过将程序放入该路径中已有的文件夹中或通过向该路径添加新文件夹来解决 - 两者都可以。最佳答案取决于:
该程序是您自己从源代码编译的下载程序吗?
它很可能已经有一个安装机制。在编译程序的文件夹中,以 root 身份运行“make install”
该程序是否是您希望作为计算机上标准程序的一部分提供的下载程序?
将此类应用程序放入标准文件夹中是有意义的。对于此类程序,使用 /usr/local/bin 等目录是很常见的。您将需要 root 访问权限才能执行此操作。
这是您为自己编写的程序和/或您在计算机上没有特殊权限。
在您的主目录中创建一个名为“bin”的文件夹,并将程序放入其中。您可能需要编辑登录脚本以添加此文件夹的完整路径(例如 /usr/home/jeremy/bin)
虽然您可以将其当前目录添加到搜索路径,但您必须对每个新程序继续执行此操作 - 从长远来看,这需要更多工作。
答案3
由于多种原因,将文件的链接放在/bin
目录中并不是最好的做法。
- 如果实际的可执行文件位于某些用户无法查看或执行的位置,他们会将其视为错误链接或功能失调的程序。
- 该
/bin
目录应该保留用于运行系统所需的程序(例如chmod
、mkdir
等)。
您实际上可以将可执行文件放置(安装)到/usr/bin/
甚至/usr/local/bin/
.当然,此时您已经手动安装了该程序;您的发行版不会像处理其他程序那样跟踪它 - 您必须在必要时手动升级它,如果您希望它消失,则必须手动将其删除。另外,您还必须知道它依赖于哪些软件包(听起来您已经使用了该程序,所以这已得到解决,但总的来说......)。
除非我正在设置一个希望其他用户使用的程序,否则我通常不会这样做:我在我的主目录中为我创建一个 bin 目录,然后编辑我的 shell 配置文件以添加~/bin/
到我的PATH
环境变量中。我发现通过这种方式跟踪我安装的程序更容易,因为它与系统的其余部分分开。
答案4
搞乱这些PATH
会让你错误地运行恶意程序。标准是在下面安装“本地”东西/usr/local
(参见FHS,它编纂了 Unix 用法:有点过时,但它给出了基本原理)。,/usr/local/bin
通常适用PATH
于所有用户。
我的“本地安装”程序位于 中$HOME/bin
,在标准舞蹈中设置./configure --prefix=$HOME ...
,加上一些(bash)别名来挑选例如系统上自建的 git(非冲突的在最后找到PATH
。