如何使程序可以从任何地方执行

ane*_*yzm 84 command-line

如果我希望能够在不考虑当前目录的情况下运行给定程序,我该怎么办?我应该为/bin文件夹中的程序创建一个符号链接吗?

oad*_*ams 62

如果您只是export PATH=$PATH:</path/to/file>在命令行中输入,它只会持续会话的长度。

如果您想永久更改它export PATH=$PATH:</path/to/file>,请添加到您的 ~/.bashrc 文件中(最后就可以了)。

  • 谢谢它的工作原理。对于像我这样的新手,记得省略尖括号 &lt;&gt;。像这样: $PATH:/your/file/path (11认同)
  • 也不要在路径中包含程序文件名本身。 (6认同)

小智 27

简而言之,要运行该程序,无论您的目录是什么,您都需要在搜索路径中包含该程序的目录。该问题可以通过将程序放入该路径中已有的文件夹来解决,或者通过向该路径添加一个新文件夹来解决 - 两者都可以。最佳答案取决于:

这个程序是您自己从源代码编译的下载程序吗?

它很可能已经有了安装机制。在编译程序的文件夹中,以 root 身份运行“make install”

该程序是否是您想要作为计算机标准程序的一部分提供的下载程序?

将此类应用程序放入标准文件夹是有意义的。对于此类程序,使用 /usr/local/bin 等目录是很常见的。您将需要 root 访问权限才能执行此操作。

这是您为自己编写的程序和/或您在计算机上没有特殊权限。

在您的主目录中创建一个名为“bin”的文件夹,并将程序放在那里。您可能需要编辑您的登录脚本以添加此文件夹的完整路径(例如 /usr/home/jeremy/bin)

虽然您可以将其当前目录添加到搜索路径中,但您必须在每个新程序中继续这样做 - 从长远来看,这是更多的工作。


Sha*_*off 21

/bin出于多种原因,在目录中放置指向文件的链接并不是最好的做法。

  • 如果实际的可执行文件位于某些用户无法看到或执行的位置,他们会将其视为错误链接或功能失调的程序。
  • /bin目录是应该保留其所需的运行系统(东西喜欢的程序chmodmkdir等等)。

实际上,你可以放置(安装)的可执行文件中/usr/bin/甚至/usr/local/bin/。当然,此时您已经手动安装了该程序;您的发行版不会像其他程序一样跟踪它 - 您必须在必要时手动升级它,并在您想要它消失时手动删除它。此外,您还必须知道它所依赖的包(听起来您已经使用了该程序,因此已经解决了这个问题,但总的来说......)。

除非我正在设置一个希望其他用户使用的程序,否则我通常不会这样做:我在我的主目录中为我创建一个 bin 目录,然后编辑我的 shell 配置文件以添加~/bin/到我的PATH环境变量中。我发现跟踪我以这种方式安装的程序更容易,因为它与系统的其余部分分开。


Ric*_*rri 6

如果你想foo在你的 shell 当前所在的目录中运行一个命令,你基本上有两个选择:

  1. 键入./foo在shell提示符。

  2. .目录(.是“当前目录”的名称)添加到PATH环境变量中;您如何执行此操作取决于您使用的外壳:

请注意,2. 是多用户系统上的安全风险:假设您cd进入目录,/tmp并且恶意用户在其中创建了一个恶意软件二进制文件ls

  • 是的,我认为选项向您展示了 unix 让您做事,这被认为是不好的做法。添加 . 到您的路径还可以产生其他通常不好的副作用。 (2认同)