.Xresources 无法由使用 i3wm 在 crouton 下运行的 urxvt 读取

.Xresources 无法由使用 i3wm 在 crouton 下运行的 urxvt 读取

Chromebook 通过 crouton 运行 Linux(最初为 Ubuntu 12.04,已升级至 14.04)。我使用以下方式从 crosh/shell 启动 X:

sudo i3

i3 的内容(省略注释/使用说明):

#!/bin/sh/ -e

set -e
exec sh -e "`dirname "\`readlink -f "$0"\`"`/enter-chroot" -t x11 "$@" "" \
    exec xinit

.xinitrc 的内容:

#!/bin/sh
[[ -f ~/.Xresources ]] && xrdb -merge ~/.Xresources
exec i3

.Xresources 的内容:

URxvt.scrollBar: false

i3 按照我的预期启动。但是,打开 urxvt 后,xrdb -query没有任何结果。我可以明确运行xrdb ~/.Xresourcesxrdb -query返回上面的一行。此后,新的 urxvt 窗口打开,没有滚动条。

我理解 urxvt 默认会获取 .Xresources。即使没有,我也会认为 .xinitrc 中的 xrdb 调用已经解决了这个问题。我推测这与 chroot 环境有关,因为上述所有操作在我的另一台 Mint 笔记本电脑上运行良好(编辑:当然,它不使用 .xinitrc)。

有人有主意吗?

答案1

我花了一整天的时间才找到这个。我想这是一个很好的学习点,所以我会在这里发布它。对于那些比我花更多时间在 shell 上的人来说,这可能更明显!

问题在于 .xinitrc 中的双方括号。Crouton 使用 sh 调用 chroot,而 sh 指向 dash。与 bash 不同,Dash 不支持使用双方括号进行测试。使用:

[ -f ~/.Xresources ] && xrdb -merge ~/.Xresources

工作正常。

相关内容