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) |