DefaultEnvironment=
inを使用すると可能であることがわかりました/etc/systemd/system.conf
。しかし、式拡張が利用可能かどうかはわかりませんPATH=$PATH:/whatever/path
。
それでは、グローバル基本サービス環境はどのように設定する必要がありますか?そして表現拡張?
ベストアンサー1
PATH
デバイスからシェルコマンドを呼び出すと、設定や他の場所に対する他の回答が機能する可能性があります。/etc/environment
しかし、以下を実行しようとすると:
ExecStart=mycommand
mycommand
そしてからエクスポートしようとすると動作$PATH
しません。これらの問題を解決するsystemd
ためには使用されません。$PATH
コンパイル時に定義されたパスのリストを使用します。
~からシステムサービス:
コマンドがフル(絶対)パスではない場合は、コンパイル時に決定された固定検索パスを使用してフルパスとして解決されます。検索されたディレクトリには、パーティション/usr/bin/および/bin/ディレクトリを使用するシステムの/usr/local/bin/、/usr/bin/、/bin/、パーティションbin/および/bin/ディレクトリを使用するシステムの/usr/local/bin/ が含まれます。 sbin/ sbin/ 対応するディレクトリ。したがって、実行可能ファイルが「標準」ディレクトリにある場合にのみ実行可能ファイル名を使用することは安全であり、他の場合は絶対パスを使用する必要があります。あいまいさを避けるために絶対パスを使用することをお勧めします。ヒント:この検索パスを照会できます
systemd-path search-binaries-default
。
ベストプラクティスは、Exec*=
フィールドを使用するときに絶対パスを使用することです。これにより必要性がなくなり、$PATH
他の人に他の場所にバイナリを追加してもサービスの動作は変わりません/usr/local/bin
。通常、テンプレート以外のサービスは動的に設計されていません(ローカル環境に応じてコンテンツや意図を変更するように設計されています)。