systemctl.service ファイルの execstart で $HOME 環境変数の使用を許可する

systemctl.service ファイルの execstart で $HOME 環境変数の使用を許可する

私はこのようなことをしたい:

[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に交換を依頼できます。

おすすめ記事