~/.xinitrc 没有运行

met*_*arp 14 ubuntu x11 lightdm

登录到我的计算机时,我无法运行我的~/.xinitrc( ~/.xsession) 脚本。我使用 Xubuntu 12.10 和 vanilla lightgm 作为登录管理器。这两个文件都有正确的权限(可执行)。我在我的~/.xinitrc,以下内容:

#!/usr/bin/env bash 

# read ~/.Xmodmap if it exists
if [[ -f "${HOME}/.Xmodmap" ]]; then
    xmodmap "${HOME}/.Xmodmap"
fi

# read ~/.Xresources if it exists
if [[ -f "${HOME}/.Xresources" ]]; then
    xrdb -load "${HOME}/.Xresources"
fi

# use gnome-keyring-daemon to manage keys
/usr/bin/gnome-keyring-daemon --start --components=gpg
/usr/bin/gnome-keyring-daemon --start --components=ssh
Run Code Online (Sandbox Code Playgroud)

任何其他命令(如date >> "$HOME/did_start")也不会被执行。

现在显然,即使我删除了我的~/.xinitrc~/.xsession文件,xmodmap似乎正在阅读~/.Xmodmap,并且~/.Xresources也在部分阅读。我检查了/etc/X11/Xsession是否有任何命令可以读取这两个文件,但没有找到。会发生什么?

编辑:由于 Gilles 的要求,我在通过 lightdm ( /usr/share/xsessions/custom.desktop)登录时使用了自定义会话:

[Desktop Entry]
Name=Xsession
Exec=/etc/X11/Xsession
Run Code Online (Sandbox Code Playgroud)

但显然这仍然通过 XFCE 启动,startxfce4即使我的~/.xinitrc.

正如乌尔里希·丹格尔 (Ulrich Dangel) 所指出的,有一行/usr/xdg/xfce4/xinitrc读取~/.Xmodmap~/.Xresources,并且该脚本由startxfce4. 所以这个“谜”现在已经解开了。但同样,颜色(xtermurxvt从等)~/.xinitrc仍然没有被加载。

Ulr*_*gel 6

对于您的第一个问题,它通常取决于您的会话,即您示例中的文件不一定足够,因为它没有启动您的 WM/DE。通常~/.xsession~/.xinitrc启动整个环境,不仅用于自动启动某些程序,即它们应该包含一行,exec x-window-manager但全局xsession可能只是源文件。

对于您的另一个问题,Debian(可能还有 Ubuntu)有/etc/X11/Xsession.d例如加载~/.Xresources. 这些文件还负责加载和查找默认窗口管理器。

要调试您的问题,您应该查看~/.xsession-errors或从控制台启动 xserver 并直接在那里查看错误消息,即startx -- /etc/X11/Xsession