可执行文件存储在/usr/libexec
类 Unix 系统上。FHS 表示(部分4.7. /usr/libexec : Binaries run by other programs (optional)"
:
/usr/libexec
包括不打算由用户或 shell 脚本直接执行的内部二进制文件。应用程序可以使用 下的单个子目录/usr/libexec
。
在 macOS 上,启动后立即rootless-init
调用的程序launchd
存储在/usr/libexec
.
/usr/libexec
当它是可以存储在/usr/bin
or中的独立可执行文件时,为什么要存储在 中/usr/sbin
?init
其他不由 shell 脚本直接调用的程序也存储在[/usr]/{bin,sbin}
.
答案1
这是一个可支持性的问题 - 平台提供商从多年的经验中了解到,如果您PATH
默认放入二进制文件,人们将要开始依赖他们的存在,并且将要取决于他们支持的具体论点和选项。
相比之下,如果放入某些内容,/usr/libexec/
则明确表明它被视为内部实现细节,并且不正式支持作为最终用户直接调用它。
无论如何,您可能仍然决定直接访问这些二进制文件,如果未来的升级破坏了您正在使用的私有接口,您将不会获得平台提供商的任何支持或同情。
答案2
答案3
libexec
适用于由其他程序执行的系统守护进程和系统实用程序。也就是说,放入此命名空间目录中的二进制文件旨在供其他程序使用,而不是由用户直接执行。
答案4
我认为它比init
- 这个想法更新,就像它所说的那样,拥有/usr/lib
你永远不会期望在任何人的$PATH
.