怎样让 GUI 桌面登录也执行一次 /etc/profile ?

在控制台登录或者通过远程 ssh 登录,成功验证帐号和密码之后,就会转到 shell (一般是 GNU Bash )环境,这时会执行一次 /etc/profile. 但对于 GUI 桌面登录,并不会执行该文件。如果要执行,是到 /etc/X11/Xsession 手工添加命令吗?还是有其他更正规的做法?另外对于 Wayland 桌面, /etc/X11/Xsession 也有效吗?

取决于你的登录器。lightdm 是会执行 /etc/profile(以及 ~/.xprofile)的。

另外,/etc/profile 这个文件是 bash 执行的。其它 shell(如 zsh)可能有预先准备的配置文件来执行它。

2 个赞

谢谢回复。

我的 Debian LXDE 桌面环境,用的应该正是 LightDM 吧?好像不会执行 /etc/profile, 而需要到 /etc/X11/Xsession 手工添加。

至少对于 Debian/Ubuntu 系统, /etc/X11/Xsession 是所有类型的桌面都会执行的文件。或者说:哪怕更换桌面,也无需额外配置。

只是不知道在 /etc/X11/Xsession 添加 /etc/profile 是不是标准的做法。另外对于 Wayland 桌面,那个地方哪怕会执行,也总感觉是 Legacy 的做法,不够标准,哈哈。

哦是的,我这里也是由 Xsession 执行的。不过我这个文件是由 Arch 提供的。

关于「Wayland 标准做法」,可能取决于具体想在 /etc/profile 里实现的功能?如果是静态的环境变量,可以用 environment.d。具体参见 environment.d(5) 手册。