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

loc*_*doc 79 login x11 startx xinit

我找到了三个配置文件。

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

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

Gil*_*il' 95

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

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

#!/bin/sh
. ~/.profile
. ~/.xinitrc
Run Code Online (Sandbox Code Playgroud)

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

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

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

  • 谢谢!我不知道 `~/.xsessionrc` 是特定于 Debian 的。[Debian 手册](https://www.debian.org/doc/manuals/debian-reference/ch07.en.html#_customizing_the_x_session_new_method) 中似乎只简单提到过。 (2认同)

Tho*_*key 8

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

首先:.xsessionrc用于保存全局环境变量。重点是我的。

其次:40x11-common_xsessionrcin/etc/X11/Xsession.d是在50x11-common_determine-startup. 所以,.xsessionrc在阅读之前 .xsession,并设置将成为提供给应用程序的任何环境变量通过在命令运行.xsession

进一步阅读:

  • .xsessionrc 也可用于启动应用程序 - 这与“global var”行相反。天哪,真是一团复杂的混乱。 (3认同)