我试图了解 Centos 7 上的用户登录过程,但在尝试弄清楚 Gnome 终端会话何时/如何定义环境变量(Gnome 3.14.4)时我有点困惑。
据我所知...Gnome 终端只会定义 /etc/profile、~/.profile 或 ~/.bash_profile 中的环境变量(如果这些变量是在这些脚本中导出的)。
如果未导出它们,则它们不会出现在 set 或 printenv 命令的输出中。 /etc/environment 文件是例外(但它不是 shell 登录脚本)。
我发现的唯一看起来可以做到这一点的是/etc/X11/xinit/xinitrc-common文件,当它来源 ~/.profile 登录脚本...但这只是一个登录脚本,并不能解释为什么 /etc/profile 和 ~!/.bash_profile 中导出的变量显示在集合中。
[ -r $HOME/.profile ] && . $HOME/.profile
如果这读取 ~/.profile 脚本中的变量...如何读取 /etc/profile 和 ~/.bash_profile 的变量?如果重要的话......我没有选择“将命令作为登录脚本运行”
答案1
我相信 Gnome 终端默认运行 bash(GNU Bourne Again SHell)。
实际上,它可能运行 /etc/passwd 中为您的帐户指定的任何 shell
启动时 bash 会遍历 ~/.profile 和 ~/.bash_profile,这就是设置这些变量的原因。
回顾一下:当您启动 Gnome 终端时,它会启动您的 shell,并且您的 shell 将通过这些脚本设置环境变量。