Shell脚本工作原理
我们知道Shell脚本是一种解释性的语言,是不用编译的,那么它是如何执行程序的呢?
chmod u+x test.sh
./test.sh
- Shell会fork()一个子进程,然后调用exec()执行,exec()会用把子进程的代码段替换成test.sh程序的代码段,然后开始执行,父进程等待子进程终止;
- 但是由于test.sh是一个文本文件,并没有代码段和_start函数,这是exec()的另一种机制,如果要执行的是一个文本文件,并且第一行用shebang指定了解释器,则用解释器的代码替换当前进程,并从解释器的_start开始执行,这个文本文件被单做命令行参数传递给解释器。
有一种现象,在脚本中执行cd命令,发现回显消息当前所处的目录发生改变,但是真实的目录却没有变。
这也很好理解,父进程创建子进程来执行脚本,所以,子进程并没有改变父进程的目录。但是直接在命令行中cd,结果bash的目录是可以改变的,这是为什么?
- 这是因为cd这条命令是不需要创建子进程的命令,这种命令叫做shell的内置命令或者叫内建命令,由父bash自己执行。
可以发现用.或者source修饰的脚本,脚本执行影响了父bash,source或者.命令是shell的内建命令,这种方式不会创建子Shell,而是直接在交互式Shell下逐行执行脚本中的命令。
Shell脚本工作原理相关推荐
- linux下shell的工作原理
shell是用户和Linux操作系统之间的接口.Linux中有多种shell,其中缺省使用的是Bash.本章讲述了shell的工作原理,shell的种类,shell的一般操作及Ba ...
- linux shell 原理,linux下shell的工作原理
linux下shell的工作原理 2009-12-8 10:19:53 出处:https://www.yqdown.com shell是用户和Linux操作系统之间的接口.Linux中有多种she ...
- 【跟晓月学shell脚本】掌握shell脚本变量原理及概念
前言 跟晓月一起学shell,死磕shell脚本,让shell脚本学习不再难. 想学习更多shell脚本的案例,可以前往我的师父的shell脚本专栏:shell脚本从入门到实战-案例篇 文章目录 前言 ...
- python 解析模块脚本_Python pexpect模块及shell脚本except原理解析
expect脚本 expect是什么 expect是一个免费的编程工具,用来实现自动的交互式任务,而无需人为干预.说白了,expect就是一套用来实现自动交互功能的软件. 在实际工作中,我们运行命令. ...
- shell 应用场景及工作原理
Shell脚本,就是利用Shell的命令解释的功能,对一个纯文本的文件进行解析,然后执行这些功能,也可以说Shell脚本就是一系列命令的集合. Shell可以直接使用在win/Unix/Linux上面 ...
- 一篇文章学懂Shell脚本
Shell脚本,就是利用Shell的命令解释的功能,对一个纯文本的文件进行解析,然后执行这些功能,也可以说Shell脚本就是一系列命令的集合. Shell可以直接使用在win/Unix/Linux上面 ...
- 一篇文章学懂Shell脚本,最简明的教程在这里
Shell脚本,就是利用Shell的命令解释的功能,对一个纯文本的文件进行解析,然后执行这些功能,也可以说Shell脚本就是一系列命令的集合. Shell可以直接使用在win/Unix/Linux上面 ...
- 【跟晓月学shell脚本】掌握shell脚本变量实战案例
前言 上篇文章我们探讨了shell脚本变量的基本原理和概念,本篇我们基于上面的内容增加一些实战. 如果你还没有学习shell脚本的变量理论,可以点击链接:[跟晓月学shell脚本]掌握shell脚本变 ...
- shell脚本监控CPU脚本
在运维过程中,我们有时需要对CPU进行优化,啥时候优化呢? 自然是出问题的时候,那么啥时候出问题呢? 这个问题就可以使用我们的shell脚本了. 原理: 通过监视一段时间内CPU使用情况,找出长期占用 ...
最新文章
- oracle11g之管理oracle数据库笔记(理论基础知识)
- 分治习题--九章算法培训课第三章笔记
- windows popen 获取不到输出_彻底明白os.system、os.popen、subprocess.popen的用法和区别...
- 存储过程与事务应用两三事
- 声明式事务和编程式事务
- mysql 数据库学习(触发器)
- 二十五、PHP框架Laravel学习笔记——模型的一对一关联
- Android之创建选项菜单
- carplant_mxnet
- 当各大编程语言摆起地摊来……
- Qt5学习笔记之bin文件合成工具三:偏移量数据填充
- centos+darwin搭建简单的视频流服务器
- ADAMS搭建控制系统教程:偏心连杆机构的转速控制
- 【CS224n】(lecture1)课程介绍和word2vec
- 腾讯笔试题编程题——纸牌游戏
- iptables 实现主机防火墙(四表五链)
- Android之音频和视频的提取
- 【PyTorch】6.1 正则化之weight_decay
- 如何将IE浏览器设置为默认浏览器
- Android O新特性和行为变更总结zz