/usr/libexec 的目的是什么?

Mel*_*lab 51 fhs

可执行文件存储在/usr/libexec类 Unix 系统中。FHS 说(部分4.7. /usr/libexec : Binaries run by other programs (optional)"

/usr/libexec包括不打算由用户或 shell 脚本直接执行的内部二进制文件。应用程序可以使用/usr/libexec.

在 Mac OS X 上,启动后立即rootless-init调用的程序launchd存储在/usr/libexec. /usr/libexec当它是可以存储在/usr/bin或 中的独立可执行文件时,为什么要存储在其中/usr/sbininit和其他不被 shell 脚本直接调用的程序也存储在[/usr]/{bin,sbin}.

nco*_*lan 34

这是一个可支持性问题 - 平台提供商从多年的经验中了解到,如果您PATH默认将二进制文件放入,人们开始依赖它们的存在,并且依赖于他们支持的特定参数和选项。

相比之下,如果放入某些内容,/usr/libexec/则明确表明它被视为内部实现细节,并且不正式支持以最终用户身份直接调用它。

无论如何,您仍然可能决定直接访问这些二进制文件,如果未来的升级破坏了您正在使用的私有接口,您将不会得到平台提供商的任何支持或同情。


fd0*_*fd0 9

OS X 不遵循 FHS 标准。它有自己的文件系统层次结构(类似于 FreeBSD 文件系统层次结构)。手册页hier指出-

libexec/ system daemons & system utilities (executed by other programs)

  • 那么看来 `/usr/libexec/java_home` 在 OSX 中肯定位于错误的位置。 (5认同)

Aar*_*sco 7

我认为它比init- 就像它所说的那样,拥有/usr/lib您永远不会期望在任何人的$PATH.


小智 6

libexec用于由其他程序执行的系统守护程序和系统实用程序。也就是说,放在这个命名空间目录中的二进制文件是供其他程序使用的,而不是由用户直接执行的。