/usr/libexec
実行可能ファイルはUnix 系システムに保存されます。FHSは言う(セクション4.7. /usr/libexec : Binaries run by other programs (optional)"
:
/usr/libexec
ユーザーやシェル スクリプトによって直接実行されることを意図していない内部バイナリが含まれます。アプリケーションは の下の単一のサブディレクトリを使用できます/usr/libexec
。
macOS では、起動直後にrootless-init
によって呼び出されるプログラムは に保存されます。launchd
/usr/libexec
/usr/libexec
または に保存できるスタンドアロンの実行可能ファイルであるのに、なぜ に保存されるのでしょう/usr/bin
か/usr/sbin
。init
シェル スクリプトによって直接呼び出されない他のプログラムも などのフォルダーに保存されます[/usr]/{bin,sbin}
。
答え1
これはサポート性の問題です。プラットフォームプロバイダーは長年の経験から、PATH
デフォルトでバイナリを入れると、人々は意思彼らがそこにいることに依存するようになり、意思サポートする特定の引数とオプションによって左右されるようになります。
対照的に、何かが組み込まれている場合は、/usr/libexec/
それが内部実装の詳細と見なされていることが明確に示され、エンドユーザーとして直接呼び出すことは正式にサポートされていません。
いずれにしても、これらのバイナリに直接アクセスすることに決めることもできますが、将来のアップグレードで使用しているプライベート インターフェイスが壊れた場合、プラットフォーム プロバイダーからサポートや同情は得られません。
答え2
答え3
libexec
他のプログラムによって実行されるシステム デーモンおよびシステム ユーティリティを対象としています。つまり、この名前空間ディレクトリに置かれたバイナリは他のプログラムが使用するためのものであり、ユーザーが直接実行するためのものではありません。
答え4
これは よりも新しいと思いますinit
。アイデアは、 に書かれているように、/usr/lib
誰の にも含まれるとは考えられないような実行可能ファイル ( には含まれるべきではない) を持つことです$PATH
。