我一直试图在github(https://github.com/systemd/systemd)上的源代码中找到这个地方,但我不明白第一个的环境变量在哪里流程已设置,我也无法在互联网上找到我的问题的答案,我需要写入这些变量的文件。
他们不是。 Systemd 是 init 进程,但它不是启动 init 进程 – 这是由内核完成的,初始环境列表位于内核的
init/main.c
:
const char *envp_init[MAX_INIT_ENVS+2] = { "HOME=/", "TERM=linux", NULL, };
unknown_bootoption()
函数解析内核命令行并使用所有“key=value”选项扩展envp_init
,例如root=/dev/foo
成为环境变量。