您好,欢迎来到华佗养生网。
搜索
您的当前位置:首页sh脚本中.和sh执行的区别以及shell的执行方式

sh脚本中.和sh执行的区别以及shell的执行方式

来源:华佗养生网
sh脚本中.和sh执⾏的区别以及shell的执⾏⽅式

1 ./需要执⾏权限,使⽤脚本⽂件中第⼀⾏#!指定的shell(解释器)来执⾏命令(譬如常见的/bin/bash),不指定系统会调⽤默认shell程序2 sh不需要执⾏权限,是使⽤sh这个shell执⾏命令,是个软链接,它可能是⼀个任意的shell,通常默认是bash shel,⽤type命令可以查看3 shell的执⾏⽅式

先来看⼀个简单的shell脚本:1#!/bin/sh2cd /tmp

3echo \"hello,world!\"

  我们来挨个解释⼀下脚本的每⼀⾏:

  第⼀⾏:#!后⾯跟的是解释器的路径(shell本⾝就是⼀种解释型语⾔),解释器的路径是/bin/sh;  第⼆⾏:cd命令是切换当前⼯作⽬录的命令,tep是linux下根⽬录的⼀个⼦⽬录;  第三⾏:echo命令是输出后⾯所跟的参数  三种执⾏⽅法:

  第⼀种:因为shell程序写完之后并没有执⾏权限,所以该脚本想要执⾏可以使⽤chmod命令赋予该脚本可执⾏的权限,然后再执⾏。

[root@localhost shell]# chmod +x echo.sh[root@localhost shell]# ./echo.shhello,world!

[root@localhost shell]# pwd/root/shell

[root@localhost shell]#

 第⼆种:调⽤解释器使得脚本执⾏,例如:bash、csh、csh、ash、bsh、ksh等等;

[root@localhost shell]# sh echo.shhello,world!

[root@localhost shell]# bash echo.shhello,world!

[root@localhost shell]# pwd/root/shell

第三种:使⽤source命令;

root@localhost shell]# source echo.shhello,world!

[root@localhost tmp]# pwd/tmp

 细⼼的读者可能发现了⼀个问题:在脚本的第⼀⾏有cd命令,这是⼀个改变⼯作⽬录的命令,可是使⽤第⼀种和第⼆种放⼤执⾏脚本后当前的⼯作⽬录并没有改变(脚本所在的⽬录是shell⽂件夹,脚本执⾏后,使⽤pwd命令显⽰出当前的⼯作⽬录还是shell),使⽤第三种⽅法执⾏后当前的⼯作⽬录就改变了,进⼊了tmp中。出现这种情况是系统本⾝执⾏脚本的⽅式不同所造成的!

  前两种⽅法执⾏脚本时系统会创建⼀个⼦进程或者说⼦shell来执⾏脚本,原来的进程就是⽗进程或者说⽗shell,整个过程中⽗进程会等待⼦进程执⾏完毕,然后⼦进程退出,⽗进程也退出。cd命令确实被执⾏了,但是仅仅是在⼦进程中改变了⼯作⽬录,所以脚本执⾏完后使⽤pwd显⽰⼯作⽬录并没有改变。⽽第三种⽅法执⾏的shell脚本的话并不创建⼦进程,就是在原来的进程中执⾏,所以最后的⼯作⽬录改变了

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo7.cn 版权所有 湘ICP备2022005869号-9

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务