Systemd: директива "Окружающая среда" для установки PATH
Каков правильный способ установки переменной PATH в файле unit systemd
?
Просмотрев несколько примеров, я попытался использовать следующий формат, но переменная, похоже, не расширяется.
Environment="PATH=/local/bin:$PATH"
Я пытаюсь сделать это на CoreOS с более низкой версией systemd.
systemd 225
-PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK -SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT -GNUTLS -ACL +XZ -LZ4 +SECCOMP +BLKID -ELFUTILS +KMOD -IDN
Ответы
Ответ 1
Вы не можете использовать 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
...
Ответ 2
Вы можете использовать директиву EnvironmentFile=
в разделе units
для установки переменных среды.
Просто поместите переменные как пары key=value
, и она будет работать.
Время выполнения просто 'источник любого файла, который вы указали.
Вы можете создать файл, используя директиву write_files
.