たとえば、非標準のプレフィックスを含むバイナリをインストールしたが、いくつかの/opt/bin/foo
静的ファイルが必要な場合は、/opt/share/foo
そのファイルをどのように見つけますか?実行可能ファイル()に基づいて../share/foo
逆参照を使用しますか?コンパイル時にハードコードされていますか?
何ですか詩アプリケーションは変数のインストールプレフィックスをどのように処理しますか?すべてのディレクトリにプレフィックスを付ける必要がありますか? (何について/var
?)
ベストアンサー1
コンパイル時にこれらの参照をハードコーディングするのが一般的であり、コンパイル時のデフォルト値をオーバーライドするためにコマンドラインオプションまたは環境変数を指定できます。通常、プログラムは/etc
コンパイル時のデフォルト値を上書きできる設定ファイル(通常は下)の場所のみを記憶します。このアプローチは、オペレーティングシステムを作成したのと同じ人がLinuxディストリビューションまたはBSDポートの一部としてコンパイルしたオープンソースソフトウェアに最適です。
バイナリ形式でデプロイされたアプリケーションの一般的なアプローチは、0番目の引数から始めてアプリケーションバイナリを見つけることです。通常、0番目のパラメータはexecve
(つまりargv[0]
)は、バイナリ(呼び出し元(通常シェル)が準拠するルール)へのパスです。argv[0]
含まれていない場合、/
アプリケーションは$PATH
それに対して照会を実行する必要があります。