如何在systemd服务文件中使用`$HOME`环境变量

Kee*_*eto 18 linux init systemd

我正在尝试$HOMEExecStart. 我尝试了很多不同的东西$HOME${HOME}但似乎没有任何效果

ExecStart=${HOME}/bin/some-binary
Run Code Online (Sandbox Code Playgroud)

有人知道这个的正确格式吗?

Jac*_*nor 21

我认为这就是您要查找的内容:https : //www.freedesktop.org/software/systemd/man/systemd.unit.html#Specifiers

具体来说,%h应该扩展到当前用户的主目录。


pR0*_*0Ps 6

支持的变量(称为“说明符”)的完整列表在这里:https : //www.freedesktop.org/software/systemd/man/systemd.unit.html#Specifiers

服务运行的用户的主目录没有说明符(由 指定的那个User=)。运行服务管理器的用户只有一个。

从链接:

%h运行服务管理器实例的用户的主目录。在系统管理员的情况下,这解析为“ /root”。请注意,此设置不受User=服务单元 [Service] 部分中可配置的设置的影响。

  • 需要明确的是,这意味着如果我有一个用户单元,那么“%h”绝对是我想要使用的,因为它会给我相当于“$HOME”的东西。 (6认同)
  • 可以确认。%h 解析为 $HOME 以获得 --user 服务。 (2认同)