在控制台登录或者通过远程 ssh 登录,成功验证帐号和密码之后,就会转到 shell (一般是 GNU Bash )环境,这时会执行一次 /etc/profile. 但对于 GUI 桌面登录,并不会执行该文件。如果要执行,是到 /etc/X11/Xsession 手工添加命令吗?还是有其他更正规的做法?另外对于 Wayland 桌面, /etc/X11/Xsession 也有效吗?
取决于你的登录器。lightdm 是会执行 /etc/profile(以及 ~/.xprofile)的。
另外,/etc/profile 这个文件是 bash 执行的。其它 shell(如 zsh)可能有预先准备的配置文件来执行它。
1 个赞
谢谢回复。
我的 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)
手册。