Я работаю над некоторыми файлами модулей для некоторых системных служб. Префикс пути к некоторым из моих двоичных файлов довольно длинный, и они используются несколько раз в предложениях ExecStart=, ExecStartPost= и ExecStop=.
У меня определены некоторые переменные среды (которые также необходимо передать службе), например:
Среда=ORACLE_HOME=/u01/приложение/оракул/продукт/19/db_1
Я считаю, что из раздела «Командные строки» в systemd.service(5) я должен иметь возможность использовать расширение переменных в предложениях Exec*=, например:
ExecStart=${ORACLE_HOME}/bin/dbstart
Когда я пытаюсь это сделать и делаю перезагрузку демона systemctl, я получаю следующую ошибку в журнале:
systemd[1]: [/usr/lib/systemd/system/oracle.service:37] Путь к исполняемому файлу не является абсолютным, игнорируя: ${ORACLE_HOME}/bin/dbstart /u01/app/oracle/product/19/db_1
Документы systemd довольно ясно указывают, что путь к файлу для запуска должен начинаться (за исключением разрешенных префиксов) с /, но есть ли какой-то нюанс синтаксиса, который мне не хватает, который позволил бы мне делать то, что я хочу?
В конце концов, я хотел бы иметь файлы, содержащие используемые переменные среды, чтобы их можно было использовать в файлах модулей systemd, а также для настройки профилей и т. д.
Я использую RHEL7 и RHEL8.