“export”命令有什么用?

DSc*_*ipt 15 shell environment-variables

我在一个终端窗口中创建了一个环境变量,并试图在另一个终端窗口中回显它。那什么也没显示。

$TEST=hello
Run Code Online (Sandbox Code Playgroud)

之后,我将其导出并echo在不同的终端窗口中再次尝试。结果和以前一样。

export TEST 
Run Code Online (Sandbox Code Playgroud)

但是如果我在登录时执行相同的代码(将代码附加到~/.profile文件)变量可以用于任何终端窗口。这里发生了什么?在终端中执行代码与在登录时执行相同的代码有什么不同?

Eri*_*ouf 29

export使一个变量将包含在子进程环境中。它不会影响其他已经存在的环境。一般来说,没有办法在一个终端中设置变量并让它自动出现在另一个终端中,环境是为每个进程自己建立的。

将它添加到您的.profilemake 中,以便您的环境将被设置为在您每次登录时都包含该新变量。所以它不会从一个 shell 导出到另一个 shell,而是指示一个新的 shell 在它设置初始环境时包含它。