如何添加可供Linux中其他进程使用的环境变量?

时间:2017-11-19 06:55:15

标签: linux bash environment-variables

在图形DE中,与KDE一样,可以使用什么命令添加可供任何其他进程使用的新环境变量?

注意:

1)我知道export A=B,但它只适用于在执行export的同一个shell中启动的后续进程,其他进程在其他地方启动,就像图形应用程序一样Chrome,不知道出口。

2)我也知道您可以将它放入~/.bash_profile或类似,但需要重启/重新登录才能使设置生效。

是否有类似export的内容但对所有应用程序都有效,并且不需要重启?

1 个答案:

答案 0 :(得分:1)

您在export中放置变量定义(无论是通过~/.bash_profile语句还是其他方式)后需要重新启动的假设是有缺陷的。您只需在修改后再次source该文件:

source ~/.bash_profile

或更便携的版本:

. ~/.bash_profile

任何一个语句都会(重新)将该文件中的任何定义加载到当前shell中。 Sourcing与执行脚本不同:它将修改调用shell本身的环境,而不是运行脚本的子shell。

~/.bash_profile这样的文件可能包含许多其他定义和设置,会破坏shell。最好只使用你想要的变量来创建一个小的(临时的)片段,而是像@JeremiahMegel建议的那样来源。

如果要更改从命令行运行的单个进程的环境,可以在同一命令行上设置变量:

VAR=value /usr/bin/gedit

这将运行gedit,环境变量VAR设置为value,但仅适用于该子进程。

不幸的是,您的桌面应用程序比这更加静态。您在菜单中看到的大多数图形应用程序可能会由.desktop等文件夹中的/usr/share/applications个文件表示。这些文件在几乎没有您期望的变量的环境中运行。它们依赖于绝对路径,并且大多数配置是通过将.desktop文件指向执行其自身设置的脚本来完成的。如果你绝对必须,可以单独修改其中一些文件,但我不建议这样做。如果您坚持使用桌面上的图形应用程序,我建议您将计划修改的桌面文件的副本复制到~/.local/share/applications,或者系统上的等效文件。这些文件将覆盖/usr/share/applications中找到的任何内容,只会影响您。