systemd:"环境"指令设置PATH

时间:2016-02-16 17:26:15

标签: linux systemd coreos

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

2 个答案:

答案 0 :(得分:28)

您无法在EnvVars指令中使用Environment。整个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
...

答案 1 :(得分:1)

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

只需将变量设为key=value对即可。

运行时只需提供您指定的文件。

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