假设某个随机程序 Foo
- 根据环境变量的值修改其行为;和
- 可以通过单击图形桌面上的某个 Foo 图标来启动。
让我们假设,在这篇文章的其余部分,每一个正在讨论的 Foo 实例已经或将会按照上面 (2) 中的描述启动。 IOW,对于这篇文章,排除通过某些命令行启动 Foo 的可能性。
为了具体起见,我们还假设当前的 X11 会话是由用户“手动”启动的;即在(文本界面)登录1startx
后的某个时刻在(文本界面)命令行上键入。
startx
现在,AFAICT 默认情况下,每个 Foo 实例继承的环境是用户执行2时所处的环境。 (如果我错了,请纠正我。)
我的问题是:是否有一些通用方法(即独立于 Foo)可以修改 Foo 的后续实例(或至少是下一个启动的 Foo 实例)继承的环境?
预计上述(一般)问题的答案可能是“否”,下面我提供一些具体细节,希望问题的更具体变体的答案是“是”:
- 目前我对 Foo 恰好是 Terminator(终端模拟器)的情况特别感兴趣;
- 我的外壳是
zsh
; - 我的桌面是xfce4 + xfwm4。
1如果在用户通过图形登录登录后自动启动 X11 会话,则此问题的答案会有所不同,请告诉我。
2或者更准确地说,遗传环境是由出口shell 变量及其值,就像用户调用startx
.我认为即使是这种措辞更仔细的描述充其量也只是过于简单化,但我希望不要过于极端,以至于使帖子的其余部分变得毫无意义。
答案1
如果您从桌面上的链接启动程序,则可以修改链接文件以包含所需的变量和值。我还没有使用 zsh 的经验,但我认为您仍然可以通过在链接中的值env VAR=VAL
的开头添加来修改链接。Exec
为了进一步阅读,我找到了ArchLinux文章解释了桌面文件中的许多条目。这是一篇 Arch 文章,但这些文件的格式是跨发行版的标准格式。
您还可以使用窗口管理器修改整个会话的此变量。