【问题标题】:How to ADD an environment variable that can be used by other process in Linux?如何添加Linux中其他进程可以使用的环境变量?
【发布时间】:2017-11-19 06:55:15
【问题描述】:

在图形化 DE(如 KDE)中,可以使用什么命令来添加可供任何其他进程使用的新环境变量?

注意:

1) 我知道 export A=B,但它仅适用于在执行 export 的同一 shell 中启动的后续进程,其他启动的进程(如 Chrome 等图形应用程序)不会了解出口。

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

是否有类似export 但对所有应用程序都有效且不需要重大重启的东西?

【问题讨论】:

  • 您可以将值保存到文件中吗?

标签: linux bash environment-variables


【解决方案1】:

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

source ~/.bash_profile

或更便携的版本:

. ~/.bash_profile

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

~/.bash_profile 这样的文件中可能有许多其他定义和设置,这些定义和设置会与shell 混淆。正如@JeremiahMegel 所建议的那样,最好只使用您想要的变量创建一个小的(临时)sn-p,然后获取它。

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

VAR=value /usr/bin/gedit

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-05
    • 1970-01-01
    • 2019-09-02
    • 2017-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多