systemd:"Environment" 设置 PATH 的指令

systemd: "Environment" directive to set 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

您可以使用 units 部分中的 EnvironmentFile= 指令来设置环境变量。

只需将变量放入 key=value 对即可。

运行时只是“源是您指定的任何文件”。

您可以使用 write_files 指令创建文件。

您不能在 Environment 指令中使用 EnvVars。整个 Environment= 将被忽略。如果您使用 EnvironmentFile=,则将加载指定的文件而不进行替换。所以 PATH=/local/bin:$PATH 正好 那个,这可能不是你想要的。

在 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
...