Chinaunix首页 | 论坛 | 博客
  • 博客访问: 120878
  • 博文数量: 30
  • 博客积分: 1140
  • 博客等级: 少尉
  • 技术积分: 297
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-20 10:01
文章分类

全部博文(30)

文章存档

2012年(5)

2011年(22)

2010年(3)

我的朋友

分类:

2011-05-04 17:33:43

source和.命令那个在当前进程执行命令,结果会影响当前父进程
而./exp.sh的方式是建立一个子进程执行命令,结果不会影响当前父进程
举例说明
display,file1,file2 三个shell脚本内容如下
display:
a=$1
file1:
./display shell
echo $a
file2:
. ./display source
echo $a
接下来运行./file1或./file2
结果显示bash: ./file1: 权限不够
所以chmod u+x file1
   chmod u+x file2
接下来运行./file1
显示./file1: line 1: ./display: 权限不够
运行./file2
显示source
说明source命令会强制执行脚本的命令忽略文件的权限。
当chmod u+x display改变display权限后
再运行./file1
结果什么都没显示
运行./file2
显示source
说明./display 命令是fork子进程,不影响当前所在父进程
而. ./display命令是在当前父进程执行脚本,影响当前父进程。

因此,source(.)命令主要用于共享变量值,例如在单独编译android某个模块前都要
. build/envsetup.sh
来将一些变量值共享到当前进程,接下来就可以用mm命令来编译单独的模块了。

阅读(1039) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~