Erlaube die Umgebungsvariable $HOME in execstart in der Datei systemctl.service

Erlaube die Umgebungsvariable $HOME in execstart in der Datei systemctl.service

Ich möchte so etwas machen:

[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

gibt es eine Möglichkeit, eine $HOME-Umgebungsvariable zu verwenden, wie ich es dort getan habe, oder muss sie fest codiert werden?

Antwort1

Spätere Versionen von systemd haben dies möglicherweise geändert, aber in 237 oder so ist es nicht mehr erlaubt $oder %im Programm, das ebenfalls ein absoluter Pfad sein muss. Sie können dies umgehen, indem Sie beispielsweise

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

Hier $HOMEwird die von der Shell erweitert. systemd erweitert solche Variablen nur, wenn sie aus einem einzigen Wort bestehen. Sie können verwenden, ${HOME}damit systemd sie immer ersetzt.

verwandte Informationen