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 ~/.Xresources
并xrdb -query
返回上面的一行。此后,新的 urxvt 窗口打开,没有滚动条。
我理解 urxvt 默认会获取 .Xresources。即使没有,我也会认为 .xinitrc 中的 xrdb 调用已经解决了这个问题。我推测这与 chroot 环境有关,因为上述所有操作在我的另一台 Mint 笔记本电脑上运行良好(编辑:当然,它不使用 .xinitrc)。
有人有主意吗?
答案1
我花了一整天的时间才找到这个。我想这是一个很好的学习点,所以我会在这里发布它。对于那些比我花更多时间在 shell 上的人来说,这可能更明显!
问题在于 .xinitrc 中的双方括号。Crouton 使用 sh 调用 chroot,而 sh 指向 dash。与 bash 不同,Dash 不支持使用双方括号进行测试。使用:
[ -f ~/.Xresources ] && xrdb -merge ~/.Xresources
工作正常。