systemd:设置PATH的"Environment"指令

Ϲοδ*_*διϲ 19 linux systemd coreos

systemd单元文件中设置PATH变量的正确方法是什么?看了几个例子后,我尝试使用下面的格式,但变量似乎没有扩展.

Environment="PATH=/local/bin:$PATH"
Run Code Online (Sandbox Code Playgroud)

我正在使用以下版本的systemd在CoreOS上尝试此操作.

systemd 225
-PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK -SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT -GNUTLS -ACL +XZ -LZ4 +SECCOMP +BLKID -ELFUTILS +KMOD -IDN
Run Code Online (Sandbox Code Playgroud)

xor*_*ves 31

你不能EnvVarsEnvironment指令中使用.整体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
...
Run Code Online (Sandbox Code Playgroud)

  • 这个答案适用于设置 PATH (`Environment="PATH=/local/bin`),但不能附加/添加到 PATH (`Environment="PATH=/local/bin:$PATH"`),对吗? (3认同)