bash环境变量是从哪里初始化的?

bash环境变量是从哪里初始化的?

当我执行时:

echo $PYTHONPATH

在命令行上我得到以下输出:

/home/nehal/catkin_ws/devel/lib/python2.7/dist-packages:/opt/ros/kinetic/lib/python2.7/dist-packages:/home/nehal/anaconda3/lib/python3.6/site-package‌​s:/home/nehal/anaconda3/lib/python3.6/dist-package‌​s:/home/nehal/anaconda3/lib/python3.6/dist-package‌​s:/home/nehal/anaconda3/lib/python3.6/dist-package‌​s:/home/nehal/anaconda3/lib/python3.5/dist-package‌​s:/home/userx/anaconda3/lib/python3.5/dist-package‌​s:/home/userx/anaconda3/lib/python3.5/dist-package‌​s:/home/userx/anaconda3/lib/python3.5/dist-package‌​s

我查看了.bashrc文件,发现只有PYTHONPATH一套

export PYTHONPATH="/home/nehal/anaconda3/lib/python3.6/site-package‌​s:$PYTHONPATH"

我也查过.profile/etc/environment/etc/profile 无处可寻PYTHONPATH

我的问题是上面的额外路径是从哪里来的?

答案1

您可以通过跟踪 bash 打开哪些文件来找出正在获取哪些文件:

strace -e open bash -l

这应该打印出 bash 尝试打开的所有文件(其中许多是您可以忽略的 C 库)。这应该会提示您去哪里寻找。 (bash 的“-l”选项要求它作为“登录”shell 运行,这通常会导致 bash 解析更多启动文件。)

答案2

启动时,“bash”会从许多文件加载其设置。它们大多数通常位于“/etc”目录的子目录中。因此,我将运行以下命令来查找包含“PYTHONPATH”的所有文件:

grep -R PYTHONPATH /etc 2>/dev/null

相关内容