作为解决 ibus 问题的解决方法,我尝试取消设置变量 $IBUS_ENABLE_SYNC_MODE。我尝试将“unset IBUS_ENABLE_SYNC_MODE”放置在多个位置,包括:
- 。轮廓
- .bashrc
- /etc/环境
- 作为启动应用程序
然而,这些都没有反映在 Unity 中启动的应用程序中;例如,当我从 Unity 启动终端时,结果是:
~$ echo $IBUS_ENABLE_SYNC_MODE
1
我应该在哪里设置这个变量以便 Unity 正确地获取它?
编辑:我的尝试失败的原因是 IBUS_ENABLE_SYNC_MODE 是在启动时由 Unity 代码内部设置的。因此,除非手动修改并重新编译 Unity,否则没有解决办法。
答案1
为 Unity (或任何其他 X 会话) 设置个人环境变量的简单方法是将它们添加到文件$HOME/.xsessionrc
。会话中启动的所有内容都可以看到这些变量,包括菜单、GUI、终端窗口等。例如,将此文本放入$HOME/.xsessionrc
:
# File sourced by /etc/X11/Xsession, for setting environment variables, etc.
export FOOVAR=testing
注销并重新登录,然后从 shell 窗口:
my-pc> echo $FOOVAR
testing
在 12.04 下测试,使用 Unity。但此功能由多种类型的桌面会话使用的脚本实现/etc/X11/Xsession
,因此它应该适用于任何会话类型。请参阅Xsession
手册页。
答案2
/etc/X11/Xsession.d/
为其创建一个文件,例如/etc/X11/Xsession.d/98local
(它必须在之前执行99x11-common_start
)。
如果这不起作用,请尝试找出变量在哪里设置。例如
sudo grep -r IBUS_ENABLE_SYNC_MODE /etc/
可能有助于找到该文件。
答案3
我不知道您要用这个做什么,但通常每个需要“全局”的变量都会被设置或取消设置,/etc/bash.bashrc
所以您必须编辑这个文件。