Я создал контейнер systemd-nspawn и установил переменные среды в соответствующих .nspawn
файл (например DISPLAY=:0
). После загрузки контейнера переменные правильно передаются в PID 1:
$ sudo cat /proc/1/environ
PATH=/usr/local/sbin:/usr/local/bin...(omitted)...DISPLAY=:0
Однако переменные среды не передаются в bash
оболочка входа в систему. Зачем?
$ env
SHELL=/bin/bash
...(etc, no DISPLAY variable)...
Я ожидал, что оболочка входа унаследует переменные среды от PID 1.
По умолчанию systemd не передает переменные среды, установленные для systemd, в выполняемые процессы. Это поведение можно изменить, используя PassEnvironment=
для модулей systemd внутри контейнера, где вы хотите получить доступ к переменным среды, см. systemd.exec для подробностей.