linux 中的局部变量

local variables in linux

当我们导出在当前 shell 中声明的局部变量时,它会传递给未来的子 shell 进程、子进程或未来的子进程吗? 有人告诉我它会传递给未来的 sub shells。正确吗?

试试看?

$ export foo=bar
$ bash
$ echo $foo
bar
$ bash
$ echo $foo
bar
$ exit
$ exit
$

tl;博士:是的。

这个简单的测试会自动回答你:

$ VAR1="Hello, World!"
$ echo "${VAR1}"
Hello, World!
$ bash
$ echo "${VAR1}"

$ export VAR1="Hello, World!"
$ echo "${VAR1}"
Hello, World!
$ bash
$ echo "${VAR1}"
Hello, World!
$ 

分解:

没有导出...

$ VAR1="Hello, World!"
$ echo "${VAR1}"
Hello, World!
$ bash
$ echo "${VAR1}"

$

... 导致 VAR1 未在 child.

中定义

同时 export ...

$ export VAR1="Hello, World!"
$ echo "${VAR1}"
Hello, World!
$ bash
$ echo "${VAR1}"
Hello, World!
$ 

... 导致 VAR1 在 child.

中被定义