.xinitrc、.xsession 和 .xsessionrc 之间的区别

.xinitrc、.xsession 和 .xsessionrc 之间的区别

我找到了三个配置文件。

  1. .xinitrc
  2. .xsession
  3. .xsessionrc

我知道第一个是用于使用的startx,第二个和第三个是在使用显示管理器时使用的。但最后两者有什么区别呢?

答案1

~/.xinitrc执行者xinit,通常通过 调用startx。该程序在登录后执行:首先在文本控制台上登录,然后使用 启动 GUI startx。的作用.xinitrc是启动会话的 GUI 部分,通常通过设置一些与 GUI 相关的设置,例如键绑定(使用xmodmapxkbcomp)、X 资源(使用xrdb)等,并启动会话管理器或窗口管理器(可能作为桌面环境的一部分)。

~/.xsession当您以图形模式登录时执行(在显示管理器)并且显示管理器调用“自定义”会话类型。 (对于历史显示管理器 xdm,.xsession始终执行,但是对于为用户提供会话类型选择的现代显示管理器,您通常需要选择“自定义”来.xsession运行。)它的作用是设置登录时参数(例如环境变量)并启动 GUI 会话。典型的.xsession

#!/bin/sh
. ~/.profile
. ~/.xinitrc

~/.xsessionrc在 Debian(以及 Ubuntu、Linux Mint 等衍生产品)上,由 GUI 登录上的 X 启动脚本执行,适用于所有会话类型和(我认为)所有显示管理器。startx如果用户没有,它也会执行.xinitrc,因为在这种情况下,startx会依赖于用于 GUI 登录的相同会话启动脚本。它的执行相对较早,在加载资源之后但在启动任何程序(例如密钥代理、D-Bus 守护程序等)之前。它通常设置可供以后启动脚本使用的变量。据我所知,它没有任何官方文档,您必须深入研究源代码才能查看有效的内容。

.xinitrc.xsession是 X11 Window 系统的历史功能,因此它们应该在所有 Unix 系统上可用并且具有类似的行为。另一方面,.xsessionrc它是 Debian 的一个功能,不基于 Debian 的发行版没有它,除非它们实现了类似的功能。

.xprofile与 非常相似.xsessionrc,但它是会话启动脚本一些显示管理器包括 GDM(GNOME 显示管理器)和 lightdm,但不包括 xdm 和 kdm 等其他内容。

答案2

根据另一次讨论,startx + ~/.xsession 而没有 ~/.xinitrc,会导致功能减少(xfce4、sid)

第一:.xsessionrc用于持有全球环境变量。重点是我的。

其次:40x11-common_xsessionrcin/etc/X11/Xsession.d是在 之前获取的50x11-common_determine-startup。所以.xsessionrc之前已读取 .xsession,任何环境变量集都将可供由 中的命令运行的应用程序使用.xsession

进一步阅读:

相关内容