разрешить переменную окружения $HOME в execstart в файле systemctl.service

разрешить переменную окружения $HOME в execstart в файле systemctl.service

Я хочу сделать что-то вроде этого:

[Unit]
Description=ROT13 demo service
After=network.target
StartLimitIntervalSec=1

[Service]
Type=simple
User=oleg
ExecStart=$HOME/.local/bin/cprev-agent   # user the home env var

[Install]
WantedBy=multi-user.target

есть ли способ использовать переменную окружения $HOME, как я сделал, или это нужно жестко закодировать?

решение1

Более поздние версии systemd могли изменить это, но в 237 или около того вам не разрешено $или %в программе, которая также должна быть абсолютным путем. Вы можете обойти это, например,

ExecStart=/usr/bin/bash -c 'exec $HOME/.local/bin/cprev-agent'

Здесь $HOMEраскрывается оболочкой. systemd раскрывает такие переменные только если они представляют собой одно слово. Вы можете использовать , ${HOME}чтобы systemd всегда заменяла его.

Связанный контент