exec 和 source的区别
source 就是让 script 在当前 shell 内执行、而不是产生一个 sub-shell 来执行。由
exec 也是让 script 在同一个行程上执行,但是原有行程则被结束了。
source ./my.script
或: . ./my.script
也就是简而言之:原有行程会否终止,就是 exec 与 source/fork 的最大差异了。
代码1.sh
#!/bin/bash
A=B
echo "PID FOR 1.sh before exec/source/fork:$$"
export A
echo "1.sh:\$A is $A"
case $ in
exec)
echo "using exec,,,,,"
exec ./.sh ;; #执行完成后结束
source)
echo "using source...."
. ./.sh ;; #执行完成后继续执行
*)
echo "using fork by default...."
./.sh ;; #另起一个进程来执行 .sh 执行后继续执行1.sh
esac echo "PID FOR 1.sh after exec/source/fork :$$"
echo "1.sh:\$A is $A"
代码 2.sh
#!/bin/bash
echo "PID for 2.sh:$$"
echo "2.sh get \$A=$A from 1.sh"
A=C
export A
echo "2.sh: \$A is $A"
修改文件权限:
chmod .sh
chmod .sh
测试代码:
$ ./.sh fork
$ ./.sh source
$ ./.sh exec
结果:
# ./.sh exec
PID FOR .sh before exec/source/fork:
.sh:$A is B
using exec,,,,,
PID for .sh:
.sh get $A=B from .sh
.sh: $A is C # ./.sh source
PID FOR .sh before exec/source/fork:
.sh:$A is B
using source....
PID for .sh:
.sh get $A=B from .sh
.sh: $A is C
PID FOR .sh after exec/source/fork :
.sh:$A is C # ./.sh fork
PID FOR .sh before exec/source/fork:
.sh:$A is B
using fork by default....
PID for .sh:
.sh get $A=B from .sh
.sh: $A is C
PID FOR .sh after exec/source/fork :
.sh:$A is B
exec 和 source的区别的更多相关文章
- fork exec source的区别
参考:http://www.cnblogs.com/bkygg/p/5023072.html 1:fork 运行的时候开一个sub_shell 执行调用的脚本,sub_shell执行的时候,pare ...
- linux下shell脚本执行方法及exec和source命令
exec和source都属于bash内部命令(builtins commands),在bash下输入man exec或man source可以查看所有的内部命令信息. bash shell的命令分为两 ...
- shell 中 exec 和 source 命令解析
文章大部分来源于:http://www.cnblogs.com/zhaoyl/archive/2012/07/07/2580749.html 作为笔记留存博客备忘. exec和source都属于bas ...
- SQL Server 中 EXEC 与 SP_EXECUTESQL 的区别
SQL Server 中 EXEC 与 SP_EXECUTESQL 的区别 MSSQL为我们提供了两种动态执行SQL语句的命令,分别是 EXEC 和 SP_EXECUTESQL ,我们先来看一下两种方 ...
- js正则表达test、exec和match的区别
test的用法和exec一致,只不过返回值是 true false. 以前用js很少用到js的正则表达式,即使用到了,也是诸如邮件名称之类的判断,网上代码很多,很少有研究,拿来即用. 最近开发遇到一些 ...
- js正则表达式中test,exec,match方法的区别说明
js正则表达式中test,exec,match方法的区别说明 test test 返回 Boolean,查找对应的字符串中是否存在模式.var str = "1a1b1c";var ...
- 【Sqlserver】SqlServer中EXEC 与 SP_EXECUTESQL的 区别
MSSQL为我们提供了两种动态执行SQL语句的命令,分别是 EXEC 和 SP_EXECUTESQL ,我们先来看一下两种方式的用法. 先建立一个表,并添加一些数据来进行演示: CREATE TABL ...
- 转转转---js正则表达exec与match的区别说明
正则表达式对象有两个定义方式:: 1.第一种定义: new RegExp(pattern, attributes);如var reg = new RegExp("abc",&quo ...
- original和source的区别
最近跟网页翻译怼上了,在给翻译前的页面起名是纠结于使用original page还是source page,就查了一下original和source的区别. original: n. 原件:原作:原物 ...
随机推荐
- JD轮播图代码
<!DOCTYPE html> <html> <head> <title>jd网站的轮播图效果</title> <me ...
- iOS UILable的一些用法
1.按钮上的文字添加下划线 问题:实现下图中右侧的按钮文字效果 代码(绿色为按钮文字加下划线方法): [MyTools createMyImageview:topEditView frame:CGRe ...
- Git 对象
Git 提供了很多方法可以方便地访问 Git 库中的对象: ♦ 采用不分的 SHA1 哈希值.不必把 40 位的哈希值写全,只采用开头的部分(4 位以上),只要不与现有的其他哈希值冲突即可. ♦ 使用 ...
- Java Script基础(十) 访问样式表
动态控制样式表 在JavaScript中,有两种方式可以动态的改变样式属性,一种是使用style属性,另一种是使用样式的className属性.另外控制元素隐藏和显示使用display属性. 1.使用 ...
- mac下为Apache 创建 .htaccess文件
标签:mac .htaccess 在设置固定链接时会提示如下的问题: 若您的 .htaccess 文件可写,我们可以自动修改它.但似乎它不可写,因此我们在下方列出了您 .htaccess 文件 ...
- hdu 3450 树状数组
思路:二分查找位置,之后是裸的树状数组. #include<set> #include<map> #include<cmath> #include<queue ...
- python学习好书推荐
1. 编程小白的第一本 Python 入门书 http://www.ituring.com.cn/book/1863 点评:知识体系全面,作者也是功底深厚.对全面了解python非常有帮助.入门级推 ...
- 二维码zxing源码分析(五)精简代码
由于工作的需要,我并不是需要二维码扫描的所有的功能,我只是需要扫一扫,并显示出来图片和url就行,于是我们就要精简代码了,源码已经分析完了,精简起来就方便多了,源码分析请看 二维码zxing源码分析( ...
- Part 59 to 60 Difference between Convert ToString and ToString,String and StringBuilder
Part 59 Difference between Convert ToString and ToString Part 60 Difference between String and Strin ...
- Hive通过查询语句向表中插入数据注意事项
最近在学习使用Hive(版本0.13.1)的过程中,发现了一些坑,它们或许是Hive提倡的比关系数据库更加自由的体现(同时引来一些问题),或许是一些bug.总而言之,这些都需要使用Hive的开发人员额 ...