这些默认环境变量是何时以及如何创建和导出的?

这些默认环境变量是何时以及如何创建和导出的?

下面是否显示了 bash shell 中的默认环境变量而不运行任何启动文件?

$ env -i bash --noprofile --norc
$ export
declare -x OLDPWD
declare -x PWD="/home/t"
declare -x SHLVL="1"

(请注意,这set将提供更长的默认 shell 变量列表,这些变量可能是也可能不是环境变量。)

这三个环境变量是何时以及如何创建和导出的?

谁创建了它们,bash 本身,或者我在启动 bash 时没有排除的一些隐式启动文件?

我的问题的灵感来自默认环境变量是什么?

谢谢。

答案1

当我好奇开源程序在做什么时,我会查看源代码(以及文档和实验)。set_auto_export (根据搜索,您似乎找到了一个非常好的列表bash的variables.c源代码

这些在里面initialize_shell_variables(),也就是打电话自 shell_initialize()在 shell.c 中,它本身是打电话自 main()在 shell.c 中。

你甚至可以找到证据并在某个时间点被标记为导出,但现在$PATH已退出。$TERMifdef'd

相关内容