systemctl.service 파일의 execstart에서 $HOME env var를 허용합니다.

systemctl.service 파일의 execstart에서 $HOME env var를 허용합니다.

나는 이런 일을하고 싶다 :

[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 env var를 사용할 수 있는 방법이 있나요? 아니면 하드코딩해야 하나요?

답변1

이후 버전의 systemd에서 이를 변경했을 수 있지만 237 정도에서는 절대 경로가 되어야 하는 프로그램에서 $허용 되지 않습니다. %예를 들어, 이 문제를 해결할 수 있습니다.

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

여기서는 $HOME쉘에 의해 확장됩니다. systemd는 이러한 변수가 단일 단어인 경우에만 확장합니다. ${HOME}항상 시스템에서 교체하도록 사용할 수 있습니다 .

관련 정보