【问题标题】:can not set linux environment variables as I expect无法按我的预期设置 linux 环境变量
【发布时间】:2020-01-11 12:24:50
【问题描述】:

我打开两个终端。 在第一个终端:

export CLASSPATH="abc"
printenv CLASSPATH   ---> output is abc

然后在第二个终端:

printenv CLASSPATH   ---> no output 

为什么在第二个终端我没有变量?

【问题讨论】:

  • 改变一个进程的环境不会也不能改变父进程或同级进程的环境。这是基本的 *nix 安全性。想象一下,如果你可以修改其他进程的 PATH:你可以执行任意命令。

标签: linux shell terminal environment-variables


【解决方案1】:

这是行不通的,因为每个程序都继承了环境,即 是环境变量及其父项中的值的列表 过程。环境不会自动传播到所有其他 系统上的程序,但仅由给定的孩子继承 程序。设置一个适用于所有新环境的全局环境 打开的终端,您需要将其设置在每次来源的文件中 你打开终端。那是什么文件取决于什么外壳 您使用和您的系统本地设置。例如,如果你使用 bash 你 应该把export CLASSPATH="abc" 放在~/.bashrc 中。

【讨论】:

【解决方案2】:

要访问全局变量,您需要在其前面加上$。你这样做了吗?

试试echo $CLASSPATH

我想你会发现this 很有帮助。

【讨论】:

  • 谢谢。在那个链接中我发现了这个:Global ENVs are global only in the context of a terminal in which it is defined...
  • 错了,$与访问全局变量无关。
猜你喜欢
  • 1970-01-01
  • 2020-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-20
  • 2018-10-15
  • 2015-02-14
  • 1970-01-01
相关资源
最近更新 更多