我创建了一个 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 继承环境变量。
答案1
默认情况下,systemd 不会将为 systemd 设置的环境变量传递给执行的进程。可以通过使用PassEnvironment=
容器内的 systemd 单元来更改此行为,其中您想要访问环境变量,请参阅systemd.exec了解详情。