linux - 如何在 Linux 中添加一个可以被其他进程使用的环境变量?

标签 linux bash environment-variables

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

注意:

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

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

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

最佳答案

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

source ~/.bash_profile

或更便携的版本:

. ~/.bash_profile

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

~/.bash_profile 这样的文件可能有许多其他定义和设置,这些定义和设置会弄乱 shell。最好创建一个只包含所需变量的小(临时)片段,然后按照@JeremiahMegel 的建议取而代之。

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

VAR=value /usr/bin/gedit

这将在环境变量 VAR 设置为 value 的情况下运行 gedit,但仅针对那个子进程。

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

关于linux - 如何在 Linux 中添加一个可以被其他进程使用的环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47374427/

相关文章:

java - 帮助我创建 JojoMips 算法,用于 Java VM 的 BogoMips

linux - 使用 crontab 在 Linux 中安排作业

Linux 查找文件和 grep 然后按日期列出

python - 为 virtualenv 和 pip 维护不同的需求文件

python - os.environ ['PATH' ] 从命令行运行 Python 代码时不起作用

reactjs - 如何在 bitbucket 管道上运行环境变量?

python - 如何将python3命令更改为python

linux - chown 和 chmod 不起作用(Raspberry Pi 2 - Jessie)

linux - 使用 bash 根据其他文件中的范围划分文件

Bash 日期大小写不正确