What is the right way to set PATH variable in a systemd
unit file?
After seeing a few examples, I tried to use the format below, but the variable doesn't seem to expand.
Environment="PATH=/local/bin:$PATH"
I am trying this on CoreOS with the below version of systemd.
systemd 225
-PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK -SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT -GNUTLS -ACL +XZ -LZ4 +SECCOMP +BLKID -ELFUTILS +KMOD -IDN
You can't use EnvVars
in Environment
directives. The whole Environment=
will be ignored. If you use EnvironmentFile=
, then the specified file will be loaded without substitution. So PATH=/local/bin:$PATH
would be exactly that, and this is probably not what you want.
Under CentOS7 the following works.
# /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
...