我对环境变量的工作方式感到困惑。据我所知,如果新进程要有一些环境变量,其父进程必须发出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
。