允許在 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是由 shell 擴展的。只有當此類變數是單字時,systemd 才會對其進行擴展。您可以使用${HOME}總是讓 systemd 替換它。

相關內容