
PATH
inを設定し、任意の/etc/environment
ユーザーとしてログインすると機能しますが、どのユーザーでもサービスを実行してもinは尊重されません/etc/environment
。
答え1
ユーザーがログインするとPAMライブラリが呼び出され、通常はPAM構成が呼び出され、ユーザーのpam_env.so
環境を設定します。この設定には読み取りが含まれます/etc/environment
。
既存のSysVinitサービス起動スクリプトでは、root以外のsu
ユーザーとしてサービスを開始できます。通常のユーザーログインと同様に、su
PAMライブラリも呼び出されるため、読み取ることができます。/etc/environment
しかし、systemd
PAMライブラリがまったく存在しない組み込みシステムでも動作するように設計されています。したがって、systemd サービスが root ではなくユーザーとして実行されるように構成されている場合、systemd
外部ライブラリに依存せずに環境初期化が処理されます。
よりENVIRONMENT
systemd.exec(5)
マンページ段落サービスファイルの設定を使用してサービス環境を調整できます。提供されるデフォルト値はほとんどないため、systemd
サービスを初期化するために必要な事項を指定する必要があります(通常は良い方法です)。
たとえば、簡単に追加できます。
EnvironmentFile=/etc/environment
サービス定義を入力してください。
PATH
ただし、サービスが他のいくつかのタスクを開始する必要がある場合は、サービスパス名に関連していない理由で変更されることに頼るよりも、一部の構成ファイルで絶対パス名で明示的に指定する方が安全です。不快な驚き。