script的执行方式的区别
2015-09-29 16:38
169 查看
上节简单的介绍了script的编程,那我写完一个.sh文件怎么运行呢?
不同的 script 执行方式会造成不一样的结果!尤其影响 bash 的环境很大呢!脚本的执行方式除了前面sh或bash命令外,还可以用 source 和小数点 (.) 来执行喔!那这种执行方式有何不同呢?
1、用直接执行的方式来执行 script
当使用直接指令下达 (绝对路径/相对路径还是 $PATH 内),或用 bash (或 sh) 来下达脚本时, 该 script 都会使用一个新的 bash 环境来执行脚本内的指令!也就是说,使用这种执行方式时, 其实 script 是在子程序的 bash 内执行的!当子程序完成后,在子程序内的各项变量生命周期将会结束而不会传回父程序中!
2、用 source 来执行脚本:直接在父程序中执行
如果你使用 source 来执行指令那就不一样了!因为 source 对 script 的执行方式可以使用底下的图示来说明! sh02.sh 会在父程序中执行的,因此各项变量的作用域都会在原本的 bash 内生效!这也是为啥你不注销系统也可以写入~/.bashrc 的设定生效时,需要使用『 source ~/.bashrc 』而不能使用『 bash ~/.bashrc 』
不同的 script 执行方式会造成不一样的结果!尤其影响 bash 的环境很大呢!脚本的执行方式除了前面sh或bash命令外,还可以用 source 和小数点 (.) 来执行喔!那这种执行方式有何不同呢?
1、用直接执行的方式来执行 script
当使用直接指令下达 (绝对路径/相对路径还是 $PATH 内),或用 bash (或 sh) 来下达脚本时, 该 script 都会使用一个新的 bash 环境来执行脚本内的指令!也就是说,使用这种执行方式时, 其实 script 是在子程序的 bash 内执行的!当子程序完成后,在子程序内的各项变量生命周期将会结束而不会传回父程序中!
2、用 source 来执行脚本:直接在父程序中执行
如果你使用 source 来执行指令那就不一样了!因为 source 对 script 的执行方式可以使用底下的图示来说明! sh02.sh 会在父程序中执行的,因此各项变量的作用域都会在原本的 bash 内生效!这也是为啥你不注销系统也可以写入~/.bashrc 的设定生效时,需要使用『 source ~/.bashrc 』而不能使用『 bash ~/.bashrc 』
相关文章推荐
- model reset()方法
- 有关﹤![CDATA[ ]]> 说明
- 面向对象的各种关系
- 知乎上关于祖传的一个回复
- 《成功人士的七个习惯》
- 网上商城之用户注册发送邮件激活
- 机器学习算法——K邻近算法
- 八大排序算法
- IMAP Tools
- 中序线索二叉树的java版本
- 第二篇 :微信公众平台开发实战Java版之开启开发者模式,接入微信公众平台开发
- ios上 更改 状态栏(UIStatusBar)的颜色,你值得一看、收藏
- [转载]MAC 下将libpomelo连接到cocos2d-x
- Oracle: Network Waits
- 正则表达式判断金额
- 基于AStar算法的RCP布线优化
- DES加密解密算法
- CentOS7下Firewall防火墙配置用法详解
- RobotFrameWork(1) 关键字驱动测试框架
- 看铜梁视窗是怎么无人化运行的【二】