用source命令执行脚本和用sh执行脚本之间的区别
2012-09-24 14:05
288 查看
问题:
有很多方式可以执行脚本,
1)。source test.bsh
2)。. test.bsh
3)。chmod a+x test.bsh;./test.bsh
4)。sh test.bsh
它们之间的差别是什么?
解决办法:
1. source命令的作用是读取并执行test.bsh中的命令;
该命令经常用点命令“.”来替代。
就是说,
# source test.bsh
与
# . test.bsh
的作用完全相同。
2. 用脚本文件名本身执行(如果shell脚本具有可执行权限)和用sh命令执行脚本的作用完全相同。
3. 用source命令执行脚本文件和用sh执行脚本文件的区别:
用source执行脚本文件,执行过程不另开进程,脚本文件中设定的变量在当前shell中可以看到;
用sh执行脚本文件,是在当前进程另开子进程来执行脚本命令,脚本文件中设定的变量在当前shell中不能看到。
比如:
test.bsh的内容如下:
以下是上面四种不同方式执行结果的差异:
可以看到,当前进程ID为2375,用source和点命令(.)执行脚本时不改变当前进程,并且脚本中的变量可以看到;
而直接执行脚本文件和使用sh执行脚本时改变了当前进程,并且脚本中的变量不能看到;
问题解决。
有很多方式可以执行脚本,
1)。source test.bsh
2)。. test.bsh
3)。chmod a+x test.bsh;./test.bsh
4)。sh test.bsh
它们之间的差别是什么?
解决办法:
1. source命令的作用是读取并执行test.bsh中的命令;
该命令经常用点命令“.”来替代。
就是说,
# source test.bsh
与
# . test.bsh
的作用完全相同。
2. 用脚本文件名本身执行(如果shell脚本具有可执行权限)和用sh命令执行脚本的作用完全相同。
3. 用source命令执行脚本文件和用sh执行脚本文件的区别:
用source执行脚本文件,执行过程不另开进程,脚本文件中设定的变量在当前shell中可以看到;
用sh执行脚本文件,是在当前进程另开子进程来执行脚本命令,脚本文件中设定的变量在当前shell中不能看到。
比如:
test.bsh的内容如下:
#!/bin/bash echo $$ tstvar=12345
以下是上面四种不同方式执行结果的差异:
dingq@wd-u1110:~/wrk/tmp$ echo $$ 2375 dingq@wd-u1110:~/wrk/tmp$ unset tstvar;source tst_sh.bsh;echo $tstvar 2375 12345 dingq@wd-u1110:~/wrk/tmp$ unset tstvar;. tst_sh.bsh;echo $tstvar 2375 12345 dingq@wd-u1110:~/wrk/tmp$ unset tstvar;./tst_sh.bsh;echo $tstvar 5960 dingq@wd-u1110:~/wrk/tmp$ unset tstvar;sh tst_sh.bsh;echo $tst_var 5966 dingq@wd-u1110:~/wrk/tmp$
可以看到,当前进程ID为2375,用source和点命令(.)执行脚本时不改变当前进程,并且脚本中的变量可以看到;
而直接执行脚本文件和使用sh执行脚本时改变了当前进程,并且脚本中的变量不能看到;
问题解决。
相关文章推荐
- 用source命令执行脚本和用sh执行脚本之间的区别
- [转] 用source命令执行脚本和用sh执行脚本之间的区别
- centos中source命令执行脚本和用sh执行脚本之间的区别
- shell脚本执行命令 . 和sh 和 source 和 ./ 的使用以及区别
- ubuntu下source、sh、bash、./执行脚本的区别详细介绍
- ubuntu(linux)下 source、sh、bash、./ 执行脚本的区别是什么?
- linux 下source、sh、bash、./执行脚本的区别
- ubuntu下source、sh、bash、./执行脚本的区别
- source、sh、bash、./执行脚本的区别
- linux中的source命令和直接执行脚本的区别
- linux 下source、sh、bash、./执行脚本的区别
- ubuntu下source、sh、bash、./执行脚本的区别详细介绍
- source、sh、bash、./执行脚本的区别
- ubuntu(linux)下source、sh/bash、./ 和 直接 执行脚本的区别
- source、sh、bash、./执行脚本的区别
- source sh执行脚本的区别
- ubuntu下source、sh、bash、./执行脚本的区别
- ubuntu下source、sh、bash、./执行脚本的区别
- ubuntu下source、sh、bash、./执行脚本的区别
- 详解shell中source、sh、bash、./执行脚本的区别