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