Я пытаюсь использовать $HOME
переменная среды в ExecStart
. Я пробовал много разных вещей, например $HOME
и ${HOME}
но вроде ничего не работает
ExecStart=${HOME}/bin/some-binary
Кто-нибудь знает правильный формат для этого?
Я думаю, это то, что вы ищете: https://www.freedesktop.org/software/systemd/man/systemd.unit.html#Specifiers.
В частности, %h
должен расшириться до домашнего каталога текущего пользователя.
Вы должны определить пользователя это User=foo
в служебном файле иметь ${HOME}
работать так, как вы ожидаете.
Если вы не установите пользователя, $HOME
будет расширен до домашнего каталога пользователя по умолчанию, используемого для запуска команды, поэтому он не будет соответствовать вашему $HOME
, следовательно, двоичный.
Другое решение - использовать для двоичного файла абсолютный путь.
Полный список поддерживаемых переменных (называемых «Спецификаторами») находится здесь: https://www.freedesktop.org/software/systemd/man/systemd.unit.html#Specifiers.
Нет спецификатора для домашнего каталога пользователя, от имени которого запускается служба (тот, который указан User=
). Есть только один для пользователя, запустившего диспетчер служб.
По ссылке:
%h
домашний каталог пользователь, запускающий диспетчер служб пример. В случае с системным менеджером это разрешает "/root
". Обратите внимание, что этот параметр не под влияниемUser=
настройка настраивается в разделе [Сервис] сервисного блока.