我想做这样的事情:
[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 替换它。