如果从 systemd 服务调用 /usr/bin/xinit ,.xinitrc 似乎会被忽略

如果从 systemd 服务调用 /usr/bin/xinit ,.xinitrc 似乎会被忽略

这是 Xubuntu 18.04 上的。

我正在尝试用我自己的在启动时全屏运行的应用程序替换 lightdm 。

我可以xinit从 root shell 运行,它正确地接受我的 /root/.xinitrc 命令并全屏运行我的程序。

which xinit  #gives "/usr/bin/xinit"

我尝试使用以下命令创建 /lib/systemd/system/fullscreen.service:

[Unit]
Description=Fullscreen App
#[email protected] plymouth-quit.service
#After=systemd-user-sessions.service [email protected] plymouth-quit.service

[Service]
ExecStart=/usr/bin/xinit

但当我跑步时

systemctl daemon-reload
systemctl start fullscreen

它只是加载登录到 root 的 xterm 终端。

任何想法为什么两者之间有什么区别?又如何让它像xinit直接运行一样呢?

答案1

对于作为系统范围服务启动的进程,$HOME环境变量将被取消设置,除非您专门设置它。并且xinit很可能会使用它来查找$HOME/.xinitrc- 即/root/.xinitrc如果您从 root shell 运行命令。

添加环境变量的一个简单方法是添加以下行:

Environment="HOME=/root"

[Service]您的服务文件的部分。

相关内容