我有一个~/.xinitrc
包含以下内容的
xrdb -merge $HOME/.Xdefaults
这xinitrc
基本上没用,因为当用户登录时它没有加载,我不认为我做错了什么,因为相同的命令适用于bash
,我的问题是:是否xinitrc
识别环境变量?
答案1
~/.xinitrc
startx
仅当您使用(或任何调用)启动 X11 时才读取xinit
。如果您以图形模式登录,显示管理器会选择要启动的会话。每个会话管理器或桌面环境都有自己的启动脚本(如果有)。
大多数系统会自动加载资源~/.Xresources
作为默认 X11 启动脚本的一部分。尝试将您的资源文件重命名为~/.Xresources
.
答案2
.xinitrc
xinit
当您显式运行(startx
最终调用xinit
)启动 X-server时执行。大多数情况下,这种情况不会发生,因为当前的 Linux 使用桌面管理器,它直接启动 X-Server,然后运行/etc/X11/Xsession <desktopenvironment>
,其中是中文件中<desktopenvironment>
任意行的值,例如Exec=
/usr/share/xsessions
Exec=startxfce4
如果您选择 XFCE 作为会话类型。
在至少基于 Debian 的系统上,脚本/etc/X11/Xsession.d/
是按顺序获取的。大多数这些脚本都会设置内容和/或修改STARTUP
最终在行中使用的变量
exec $STARTUP
因此从技术上讲,您可以编写一个/usr/share/xsession/xinitrc.desktop
文件,让您选择将运行的会话~/.xinitrc
。