/usr/libexec の目的は何ですか?

/usr/libexec の目的は何ですか?

/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/sbininitシェル スクリプトによって直接呼び出されない他のプログラムも などのフォルダーに保存されます[/usr]/{bin,sbin}

答え1

これはサポート性の問題です。プラットフォームプロバイダーは長年の経験から、PATHデフォルトでバイナリを入れると、人々は意思彼らがそこにいることに依存するようになり、意思サポートする特定の引数とオプションによって左右されるようになります。

対照的に、何かが組み込まれている場合は、/usr/libexec/それが内部実装の詳細と見なされていることが明確に示され、エンドユーザーとして直接呼び出すことは正式にサポートされていません。

いずれにしても、これらのバイナリに直接アクセスすることに決めることもできますが、将来のアップグレードで使用しているプラ​​イベート インターフェイスが壊れた場合、プラットフォーム プロバイダーからサポートや同情は得られません。

答え2

OS XはFHS規格独自のファイルシステム階層を持っています(FreeBSDファイルシステム階層に似ています)。マニュアルページhier状態:

libexec/- システムデーモンとシステムユーティリティ(他のプログラムによって実行される)

答え3

libexec他のプログラムによって実行されるシステム デーモンおよびシステム ユーティリティを対象としています。つまり、この名前空間ディレクトリに置かれたバイナリは他のプログラムが使用するためのものであり、ユーザーが直接実行するためのものではありません。

答え4

これは よりも新しいと思いますinit。アイデアは、 に書かれているように、/usr/lib誰の にも含まれるとは考えられないような実行可能ファイル ( には含まれるべきではない) を持つことです$PATH

関連情報