交互式登录 Shell 与 X 显示管理器

交互式登录 Shell 与 X 显示管理器

我和我的一个朋友正在一起通过 RHCSA 进行工作,我们偶然发现了一些我们都不完全理解的东西。这就是我们认为它的工作方式,并且想知道它是否正确。

当您使用基于文本的交互式登录方式登录时,shell 会从/etc/profile~/.bash_profile(Debian 中的 .profile?) 获取设置。这就是我们感到困惑的地方。从该会话生成的任何子 shell 都具有与父级相同的设置(即:它从/etc/profile和获得什么~/.bash_profile?)或者它基本上会忘记所有这些设置而仅从/etc/bashrc和继承~/.bashrc

此外,

当你通过 X Windows 登录时,那是一个 shell 吗?

它只是一个有自己特殊设置的会话管理器吗?或者它也继承自/etc/profile?

如果我在 X windows 中打开 GUI 应用程序,它从哪里继承权限?

答案1

我相信这个问题可能有助于理解一些:登录 Shell 和非登录 Shell 之间的区别?

我就根据我的经验来回答吧。如果您使用交互式登录 shell,例如 bash,一旦您登录,它将读取/source ~/.bash_profile。您在该会话中打开的任何新子 shell 都将继承这些设置,此外还有源 ~/.bashrc。这就是为什么一般来说,人们将环境变量放在 .bash_profile 中,而将别名或提示主题等其他内容放入 .bashrc 中。

但是,如果您使用显示管理器登录,例如。 lightdm,一旦您登录,它就不会获取 .bash_profile。相反,它通常读取 ~/.xprofile,并且您启动的任何终端都只会获取 ~/.bashrc (在这种情况下永远不会获取 ~/.bash_profile)

有些人创建包含所有环境变量和全局设置的 ~/.profile 或 ~/.env 文件,并从 ~/.bash_profile、~/.xprofile、~/.zprofile 等获取该文件,以在登录 shell 之间进行切换或显示管理器更容易。然后您仍然可以将 shell/x 特定的内容放入各自的文件中。例如我的 ~/.xprofile 很简单

source ~/.env
volumeicon &

相关内容