允许在 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 替换它。

相关内容