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.