如何在 Unity 会话中设置环境变量?

如何在 Unity 会话中设置环境变量?

作为解决 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所以您必须编辑这个文件。

相关内容