将类似的程序分组到单个路径目录中是否有任何好处?

cyl*_*der 2 linux executable

我在 Web 服务器中设置 prometheus,我注意到每个导出器都是它自己的程序,必须添加到 $PATH 中的目录中。

我的问题是,为这些创建一个专门的目录(例如,“/usr/exporters/bin”,以构成一些示例)并将所有导出程序放在那里,然后将该文件添加到 $PATH 是否有任何好处? 还是最好将程序推送到存放二进制文件的默认目录?

wal*_*tor 7

唯一的好处是 中的目录较少$PATH,因此在查找可执行文件时要搜索的目录较少,但是:

  • 此事件(搜索 中的所有目录$PATH)很少见。$PATH条目(可执行文件)保存在 内的哈希表中bash,该表在启动时或通过 进行更新rehash。无需$PATH每次都搜索。

  • 这个活动不贵。所有需要的信息(文件存在和权限允许执行)都可以从文件的目录条目中收集 - 无需访问每个文件。只需阅读目录。

不将可执行文件移动到其他公共目录的原因包括:

  • 您将拥有一个非标准的环境。当你寻求帮助时,需要额外的努力来解释这一点。特别是由非标准环境引起的问题将很难解决。

  • 您将拥有一个非标准的环境。发布更新版本时,您的环境将与更新预期不符。

  • 您将拥有一个非标准的环境。您必须记住并在本周、下周、下周、……永远进行非标准环境更新。

这是没有任何好处的猴子运动。


Fel*_*xJN 5

将二进制文件保存在具有匹配库的目录中是很常见的。用例是版本控制。假设您安装了多个版本的 python(2.7、2.7、3...)并且需要它们但想要定义一个标准。

通常,这使用alternatives套件和从 eg 到二进制文件的软链接/usr/bin(在 中定义/etc/alternatives)。

一个主要优势还可能是在$PATH. 例如,当您通过本地版本或执行预检查的脚本(例如在shredding 文件之前放置警告的脚本)覆盖标准命令时,人们会将它们放在 开头列出的目录中$PATH,因此本地(用户)版本是仅通过其完整路径运行和标准的。

关于您的问题的更多信息:移动二进制文件不是一个好主意:它们可能依赖于其目录中的其他文件。最多软链接它们。或者只是使用一alternatives组工具 - 这也有助于保持更多的概览。