下面是否显示了 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源代码
$OLDPWD
: http://git.savannah.gnu.org/cgit/bash.git/tree/variables.c#n897$PWD
:http://git.savannah.gnu.org/cgit/bash.git/tree/variables.c#n849$SHLVL
:http://git.savannah.gnu.org/cgit/bash.git/tree/variables.c#n839在 QNX 上
$NODE
:http://git.savannah.gnu.org/cgit/bash.git/tree/variables.c#n483
这些在里面initialize_shell_variables()
,也就是打电话自 shell_initialize()
在 shell.c 中,它本身是打电话自 main()
在 shell.c 中。
你甚至可以找到证据并在某个时间点被标记为导出,但现在$PATH
已退出。$TERM
ifdef'd