Systemd

systemd-nspawn 環境變數

  • February 19, 2020

我創建了一個 systemd-nspawn 容器並在匹配.nspawn文件中設置環境變數(例如DISPLAY=:0)。啟動容器後,變數會正確傳遞給 PID 1:

$ sudo cat /proc/1/environ 
 PATH=/usr/local/sbin:/usr/local/bin...(omitted)...DISPLAY=:0

但是,環境變數不會傳遞給bash登錄 shell。為什麼?

$ env
 SHELL=/bin/bash
 ...(etc, no DISPLAY variable)...

我希望登錄 shell 會從 PID 1 繼承環境變數。

預設情況下,systemd 不會將 systemd 設置的環境變數傳遞給已執行的程序。可以通過使用容器內的 systemd 單元來更改此行為PassEnvironment=,您希望在其中訪問環境變數,有關詳細資訊,請參閱systemd.exec

引用自:https://serverfault.com/questions/994944