我正在运行 KDE 4.10。我已将环境变量添加到 .profile 中,但是,除非我重新启动 KDE,否则通过 KDE GUI(而不是具有更新环境的 shell)启动的程序显然看不到此变量。
有没有办法告诉 KDE 重新读取环境,或者通过 DBUS 或类似机制明确设置 KDE 环境?
一个技巧是从具有修改环境的 shell 重新启动 KDE 程序,如 klauncher 和 krunner,但我正在寻找更优雅的方法(优雅意味着不必通过改变正在运行的程序的内存gdb
,哈哈)。
我们最终是否找到了 Windows 可以轻松做到而 KDE/Linux 无法做到的事情?
更新 04/18:更新至 KDE 4.10,添加有关 Windows 的评论。
答案1
我为做同样的事情所做的所有努力都白费了......环境变量是特殊的东西,子进程不能改变父进程的环境,而父进程可以在分叉子进程之前调整事物。
正如您所提到的,您可以从新启动的 konsole 启动所需的程序,该程序将继承新的 .profile 设置,但对于某些程序来说,这还不够。
唉……你至少需要注销然后重新登录。很抱歉。但往好的方面想……你不必重新启动。
(嗯,在 :1(或 :2,等等)上启动另一个新的 X 服务器,调整所有需要继续运行的程序的 DISPLAY 环境变量,将它们转移到新的 X 服务器...然后终止第一个服务器并切换到新的服务器。(请注意,说起来容易做起来难))
编辑:
我有另一个想法!!如果你要使用数据库闯入奎因进程,使用特制的函数调用,您可以添加任意数量的环境变量、更改值等等……然后这些都会反映在您从该点开始启动的任何新程序/进程中。我曾这样做过,将进程的“当前目录”更改为卸载/重新安装。可能不适合胆小的人……但这不是我们在这里迎合的,是吗?嘻嘻!有可能!我想您也可以闯入您正在运行的每个进程,注入新的环境变量值。然后您不必重新启动任何东西。
来自的明智之言本叔叔(蜘蛛侠,不是 RICE!天哪!)...”拥有权利的同时也被赋予了重大的责任“我想我会暂时把那个想法卡放在“尚未证实”的堆栈中。你先做……我会看着……从这里……在这扇防爆门后面……