如何修改通过桌面启动的应用程序看到的外壳环境?

如何修改通过桌面启动的应用程序看到的外壳环境?

假设某个随机程序 Foo

  1. 根据环境变量的值修改其行为;和
  2. 可以通过单击图形桌面上的某个 Foo 图标来启动。

让我们假设,在这篇文章的其余部分,每一个正在讨论的 Foo 实例已经或将会按照上面 (2) 中的描述启动。 IOW,对于这篇文章,排除通过某些命令行启动 Foo 的可能性。

为了具体起见,我们还假设当前的 X11 会话是由用户“手动”启动的;即在(文本界面)登录1startx后的某个时刻在(文本界面)命令行上键入。


startx现在,AFAICT 默认情况下,每个 Foo 实例继承的环境是用户执行2时所处的环境。 (如果我错了,请纠正我。)

我的问题是:是否有一些通用方法(即独立于 Foo)可以修改 Foo 的后续实例(或至少是下一个启动的 Foo 实例)继承的环境?


预计上述(一般)问题的答案可能是“否”,下面我提供一些具体细节,希望问题的更具体变体的答案是“是”:

  1. 目前我对 Foo 恰好是 Terminator(终端模拟器)的情况特别感兴趣;
  2. 我的外壳是zsh
  3. 我的桌面是xfce4 + xfwm4。

1如果在用户通过图形登录登录后自动启动 X11 会话,则此问题的答案会有所不同,请告诉我。

2或者更准确地说,遗传环境是由出口shell 变量及其值,就像用户调用startx.我认为即使是这种措辞更仔细的描述充其量也只是过于简单化,但我希望不要过于极端,以至于使帖子的其余部分变得毫无意义。

答案1

如果您从桌面上的链接启动程序,则可以修改链接文件以包含所需的变量和值。我还没有使用 zsh 的经验,但我认为您仍然可以通过在链接中的值env VAR=VAL的开头添加来修改链接。Exec为了进一步阅读,我找到了ArchLinux文章解释了桌面文件中的许多条目。这是一篇 Arch 文章,但这些文件的格式是跨发行版的标准格式。

您还可以使用窗口管理器修改整个会话的此变量。

相关内容