web-dev-qa-db-ja.com

systemd:PATHを設定するための「環境」ディレクティブ

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
18

EnvVarsディレクティブではEnvironmentを使用できません。 Environment=全体は無視されます。 EnvironmentFile=を使用すると、指定されたファイルが置換なしでロードされます。 PATH=/local/bin:$PATHexactlyであり、これはおそらくあなたが望むものではありません。

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
...
31
xoryves

unitsセクションでEnvironmentFile=ディレクティブを使用して、環境変数を設定できます。

変数をkey=valueペアとして配置するだけで機能します。

ランタイムは、指定したファイルを「ソース」します。

write_filesディレクティブを使用してファイルを作成できます。

1
krish7919