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的区别的更多相关文章

  1. fork exec source的区别

    参考:http://www.cnblogs.com/bkygg/p/5023072.html 1:fork  运行的时候开一个sub_shell 执行调用的脚本,sub_shell执行的时候,pare ...

  2. linux下shell脚本执行方法及exec和source命令

    exec和source都属于bash内部命令(builtins commands),在bash下输入man exec或man source可以查看所有的内部命令信息. bash shell的命令分为两 ...

  3. shell 中 exec 和 source 命令解析

    文章大部分来源于:http://www.cnblogs.com/zhaoyl/archive/2012/07/07/2580749.html 作为笔记留存博客备忘. exec和source都属于bas ...

  4. SQL Server 中 EXEC 与 SP_EXECUTESQL 的区别

    SQL Server 中 EXEC 与 SP_EXECUTESQL 的区别 MSSQL为我们提供了两种动态执行SQL语句的命令,分别是 EXEC 和 SP_EXECUTESQL ,我们先来看一下两种方 ...

  5. js正则表达test、exec和match的区别

    test的用法和exec一致,只不过返回值是 true false. 以前用js很少用到js的正则表达式,即使用到了,也是诸如邮件名称之类的判断,网上代码很多,很少有研究,拿来即用. 最近开发遇到一些 ...

  6. js正则表达式中test,exec,match方法的区别说明

    js正则表达式中test,exec,match方法的区别说明 test test 返回 Boolean,查找对应的字符串中是否存在模式.var str = "1a1b1c";var ...

  7. 【Sqlserver】SqlServer中EXEC 与 SP_EXECUTESQL的 区别

    MSSQL为我们提供了两种动态执行SQL语句的命令,分别是 EXEC 和 SP_EXECUTESQL ,我们先来看一下两种方式的用法. 先建立一个表,并添加一些数据来进行演示: CREATE TABL ...

  8. 转转转---js正则表达exec与match的区别说明

    正则表达式对象有两个定义方式:: 1.第一种定义: new RegExp(pattern, attributes);如var reg = new RegExp("abc",&quo ...

  9. original和source的区别

    最近跟网页翻译怼上了,在给翻译前的页面起名是纠结于使用original page还是source page,就查了一下original和source的区别. original: n. 原件:原作:原物 ...

随机推荐

  1. 使用手机模拟器与android操作系统

    创建手机模拟器: 1. 点击Eclipse中新增的按钮,打开"Android Virtual Device Manager"(不同版本的ADT可能打开路径不同),如下图: 2. 点 ...

  2. vb.net中的SqlHelper

    1.定义: SqlHelper是一个基于·NET Framework的数据库操作组件.组件中包含数据库操作方法.SqlHelper用于简化你重复的去写那些数据库连接(SqlConnection),Sq ...

  3. React Native开发环境搭建

    安装Xcode 安装Homebrew 安装Android SDK 安装flow和watchman 安装nodejs 安装react-native-cli 安装Genymotion 安装Webstorm ...

  4. QQ互联登录回调路径错误redirect uri is illegal(100010)

    QQ互联登录设置的路径设置

  5. 【JS Note】字符串截取

    Js中字符截取常用的三个函数:slice().substring().substr(). slice(): slice(start,[end]) 第一个参数代表开始位置,第二个参数代表结束位置的下一个 ...

  6. Backbone.js学习之View

    千呼万唤始出来,终于到最后一个要点View了.照旧,先来一睹官方文档: Backbone views are almost more convention than they are code - t ...

  7. 移动开发Html 5前端性能优化指南

    详细内容请点击 PC优化手段在Mobile侧同样适用在Mobile侧我们提出三秒种渲染完成首屏指标基于第二点,首屏加载3秒完成或使用Loading基于联通3G网络平均338KB/s(2.71Mb/s) ...

  8. 【CSS3】---曲线阴影翘边阴影

    效果图 代码 index <!DOCTYPE html> <html> <head> <meta charset=utf-8 /> <title& ...

  9. [CAMCOCO][C#]我的系统架构.服务器端.(二)----DATA层

    这一层在园子里有很多很多的介绍了,这层写好之后老胡也没多研究,基本上就是参考的园子里大咖们的写法,具体的说明老胡也细说不了了,把接口和思路简单描述一下就好,如果有问题还是那句话,感谢您不吝赐教,老胡这 ...

  10. arraylist寻址

    首先感谢小不点儿同学提供的思路. 问题背景:把manage.aspx中的gridview列出的所有ID值传入下一个页面(放入arraylist,并通过session传递arraylist). 点击ID ...