|
发表于 2005-6-21 02:30:14
|
显示全部楼层
Post by romeo198304
谢谢大哥的回复!
我不用export后
$ example2 的结果是:
My name is Liu Ying
My name is
而$ example3的结果是
My name is
但是我还是想问,按你说的用了export后当前shell的环境变量子shell可用也可修改的话为何
$ example3 的结果是
My name is Meng Qing
而不是被修改过的 Liu Ying 呢?
我主要不懂的是为什么在example2脚本里面的example3的myname的值是example2里面定义的myname的值呢?
下面我将程序改成如下:
$ myname="Meng Qing"
$ export myname
$ cat example2
myname="Liu Ying"
echo "My name is $myname"
example3
$ cat example3
example4
$ cat example4
echo "My name is $myname"
然后我执行:
$ example2
结果仍然是:
My name is Liu Ying
My name is Liu Ying
而执行 $ example3和$ example4的结果都是
My name is Meng Qing
呵呵!头更晕了!忘各位大哥帮帮忙!
不管有多少脚本会在你得第一个脚本里执行,所有的子shell都可见那个变量。还有就是scope,这个很重要,脚本中的变量的永远是在子shell中,除非你. ./script运行它或是source它,不然回到当前shell,他仍然是原来的值。在code实现上,我认为是在子shell中取了环境变量的copy. |
|