本文主要介绍以下几个命令的区别:
我们提供的服务有:成都网站设计、成都网站制作、微信公众号开发、网站优化、网站认证、兴安ssl等。为上1000家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的兴安网站制作公司
commond
Linux执行Scripts有两种方式,主要区别在于是否建立subshell
source filename
or . filename
不创建subshell,在当前shell环境下读取并执行filename中的命令,相当于顺序执行filename里面的命令
bash filename
or ./filename
创建subshell,在当前bash环境下再新建一个子shell执行filename中的命令子shell继承父shell的变量,但子shell不能使用父shell的变量,除非使用export【备注:这和命名空间是相似的道理,甚至和c中的函数也有些类似】
子Shell从父Shell继承得来的属性如下:
子Shell不能从父Shell继承的属性,归纳如下:
$ (commond)
它的作用是让命令在子shell中执行
commond
和$(commond)
差不多。【这里的“ ` ”符号是撇(反单引号),不是单引号,是键盘上Esc按键下面的那个键。】
exec commond
替换当前的shell却没有创建一个新的进程。进程的pid保持不变作用:shell的内建命令exec将并不启动新的shell,而是用要被执行命令替换当前的shell进程,并且将老进程的环境清理掉,而且exec命令后的其它命令将不再执行。当在一个shell里面执行exec ls
后,会列出了当前目录,然后这个shell就自己退出了。(后续命令不再执行)因为这个shell已被替换为仅执行ls命令的进程,执行结束自然也就退出了。需要的时候可以用sub shell 避免这个影响,一般将exec命令放到一个shell脚本里面,用主脚本调用这个脚本,调用点处可以用bash a.sh
(a.sh就是存放该命令的脚本),这样会为a.sh建立一个sub shell去执行,当执行到exec后,该子脚本进程就被替换成了相应的exec的命令。
网页题目:linux执行脚本shell与子shell
文章路径:http://www.shufengxianlan.com/qtweb/news12/510612.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联