新的 BASH shell 的变量来自哪里?

新的 BASH shell 的变量来自哪里?

我对环境变量的工作方式感到困惑。据我所知,如果新进程要有一些环境变量,其父进程必须发出export。但是当我们启动新的 bash 会话时,所有变量怎么办?

示范:

manos@box:~$ bash
manos@box:~$ env
XDG_VTNR=7
SSH_AGENT_PID=2300
XDG_SESSION_ID=c2
..

这一切从何而来?

答案1

在这种情况下,父进程是您当前的 shell。它在启动时会加载一些 init 脚本,它们可以导出变量。检查~/.bashrc~/.profile~/.bash_profile~/.bash_login/etc/profile

它还可以从其父进程继承一些导出的变量init

相关内容