実行可能ファイルは、Unixライクなシステムでは_/usr/libexec
_に格納されます。 FHSによると(セクション4.7. /usr/libexec : Binaries run by other programs (optional)"
:
_
/usr/libexec
_には、ユーザーまたはシェルスクリプトによって直接実行されることを目的としていない内部バイナリが含まれています。アプリケーションは、_/usr/libexec
_の下の単一のサブディレクトリを使用できます。
Mac OS Xでは、_rootless-init
_ブート直後にlaunchd
によって呼び出されるプログラムが_/usr/libexec
_に格納されます。 _/usr/libexec
_または_/usr/bin
_に格納できるスタンドアロンの実行可能ファイルであるのに、なぜ_/usr/sbin
_に格納されるのですか? init
およびシェルスクリプトから直接呼び出されない他のプログラムも_[/usr]/{bin,sbin}
_のようなフォルダーに保存されます。
これはサポート性の問題です。プラットフォームプロバイダーは長年の経験から、デフォルトでPATH
にバイナリを配置すると、人々が来ることを学びましたそれらがそこにあることに依存し、willがそれらがサポートする特定の引数とオプションに依存するようになります。
対照的に、何かが/usr/libexec/
これは、内部実装の詳細と見なされていることを明確に示しており、エンドユーザーとして直接呼び出すことは正式にはサポートされていません。
とにかく、これらのバイナリに直接アクセスすることもできますが、将来のアップグレードで使用しているプライベートインターフェイスが壊れた場合でも、プラットフォームプロバイダーからサポートや同情を得ることはできません。
私はそれがinit
より新しいと思います-その考えは、それが言ったように、実行可能ファイルを持っていることです(したがって、それらは/usr/lib
)誰かの中にあるとは決して期待しないであろう$PATH
。
OS XはFHS標準に準拠していません。独自のファイルシステム階層があります(FreeBSDファイルシステム階層と同様)。マニュアルページhier
は
libexec/ system daemons & system utilities (executed by other programs)
libexec
は、他のプログラムによって実行されるシステムデーモンおよびシステムユーティリティ用です。つまり、この名前空間のディレクトリに置かれたバイナリは、他のプログラムで使用するためのものであり、ユーザーが直接実行することを意図したものではありません。