Systemd

如果從 systemd 服務呼叫 /usr/bin/xinit 似乎會忽略 .xinitrc

  • February 15, 2020

這是在 Xubuntu 18.04 上。

我正在嘗試用我自己的在啟動時全屏執行的應用程序替換 lightdm。

我可以xinit從 root shell 執行,它正確地接受我的 /root/.xinitrc 命令並全屏執行我的程序。

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

我嘗試使用以下命令製作 /lib/systemd/system/fullscreen.service:

[Unit]
Description=Fullscreen App
#Conflicts=getty@tty7.service plymouth-quit.service
#After=systemd-user-sessions.service getty@tty7.service plymouth-quit.service

[Service]
ExecStart=/usr/bin/xinit

但是當我跑步時

systemctl daemon-reload
systemctl start fullscreen

它只是載入登錄到 root 的 xterm 終端。

任何想法為什麼兩者之間有任何區別?以及如何讓它像xinit直接執行一樣?

對於作為系統範圍服務啟動的程序,$HOME環境變數將被取消設置,除非您專門設置它。並且xinit很可能會使用它來查找$HOME/.xinitrc- 即/root/.xinitrc,如果您從根 shell 執行命令。

添加環境變數的一種簡單方法是添加以下行:

Environment="HOME=/root"

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

引用自:https://unix.stackexchange.com/questions/567703