有关source 命令的疑问

有关source 命令的疑问

看资料说此命令可以把随后的脚本文件中的变量加入到当前shell的环境中。那我如果写个脚本里面包含我新定义的变量,然后用此命令来执行应该新的变量已经作为当前shell环境的一部分了吧。可我在用bash命令启动子shell时发现,并没有我以前刚定义的变量,这是为什么呢?
这是在我FC 2 上做的
复制内容到剪贴板
代码:
[root@localhost shell]# cat lisource

   

AABB=abc

#echo ${AABB}


[root@localhost shell]# .  ./lisource
[root@localhost shell]# bash
[root@localhost shell]# echo $AABB

[root@localhost shell]#
我觉得应该显示abc才对啊!      
#!/bin/bash
AABB=abc

echo ${AABB}


运行就行了,不用

[root@localhost shell]# bash
[root@localhost shell]# echo $AABB

      
如果你想在子sub-shell中继承到一个变量
那这个变量需要用export, 或是写入 ~/.bashrc
复制内容到剪贴板
代码:
$ cat a
export AABB=abc
13:48:02 | /tmp | $?: 0
$ . a
13:48:04 | /tmp | $?: 0
$ bash
13:48:07 | /tmp | $?: 0
$ echo $AABB
abc
13:48:18 | /tmp | $?: 0
      
我知道可以用export 来声明,另外在bashrc中添加实际是改变了shell的初始化文件所以也可以。可我看书上说的source好象也可以,主要是想理解source的用法。      
好像很久没见着海天一色同志了       
是啊,前段时间有点忙。现在终于有时间了,开始接着研究我喜爱的linux,也回到了论坛,大家都好吧!
      
斑竹,救救我啊,大慈大悲的.......      
我在3楼不是已经解释完了么

source当然可以导入一个在另外文件中定义/赋值的变量
但如果你要让sub-shell看到这个变量(继承)
就需要export这个变量