systemd
ユニットファイルにPATH変数を設定する正しい方法は何ですか?いくつかの例を見て、以下の形式を使用しようとしましたが、変数は拡張されていないようです。
Environment="PATH=/local/bin:$PATH"
Systemdの以下のバージョンのCoreOSでこれを試しています。
systemd 225
-PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK -SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT -GNUTLS -ACL +XZ -LZ4 +SECCOMP +BLKID -ELFUTILS +KMOD -IDN
EnvVars
ディレクティブではEnvironment
を使用できません。 Environment=
全体は無視されます。 EnvironmentFile=
を使用すると、指定されたファイルが置換なしでロードされます。 PATH=/local/bin:$PATH
はexactlyであり、これはおそらくあなたが望むものではありません。
CentOS7では、次のように機能します。
# /etc/systemd/system/nagios.service.d/env.conf
[Service]
Environment="PATH=/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
> Sudo systemctl daemon-reload
> Sudo systemctl restart nagios
> Sudo cat /proc/28647/environ
...
PATH=/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
...
units
セクションでEnvironmentFile=
ディレクティブを使用して、環境変数を設定できます。
変数をkey=value
ペアとして配置するだけで機能します。
ランタイムは、指定したファイルを「ソース」します。
write_files
ディレクティブを使用してファイルを作成できます。