X11

.xinitrc、.xsession 和 .xsessionrc 之間的區別

  • October 1, 2020

我找到了三個配置文件。

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

我知道第一個是用於使用startx的,第二個和第三個是在使用顯示管理器時使用的。但是後兩者有什麼區別?

~/.xinitrc由 執行xinit,通常通過 呼叫startx。該程序在登錄後執行:首先登錄文本控制台,然後使用startx. 的作用.xinitrc是啟動會話的GUI部分,一般通過設置一些GUI相關的設置如鍵綁定(with xmodmapor xkbcomp)、X資源(with 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 等其他顯示管理器。

引用自:https://unix.stackexchange.com/questions/281858