Linux中执行shell脚本的4种方式总结,即在Linux中运行shell脚本的4种方式:shell
方式一:切换到shell脚本所在的目录(此时,称为工做目录)执行shell脚本:bash
复制代码代码以下:spa
cd /data/shell ./hello.sh
./的意思是说在当前的工做目录下执行hello.sh。若是不加上./linux模拟,bash可能会响应找到不到hello.sh的错误信息。因为目前的工做目录(/data/shell)可能不在执行程序默认的搜索路径之列,也就是说linux移植,不在环境变量PASH的内容之中。查看PATH的内容可用echo$PASH命令。现在的/data/shell就不在环境变量PASH中的,因而必须加上./才可执行。code
技巧二:以绝对路径的方法去执行bashshell脚本:承继
复制代码代码以下:进程
/data/shell/hello.sh
方式三:直接使用bash或sh来执行bashshell脚本:ip
复制代码代码以下:资源
cd /data/shell bash hello.sh
或class
复制代码代码以下:登陆
cd /data/shell sh hello.sh
注意,假若以方式三的方法来执行,这么,才能没必要事先设定shell的执行权限,甚至都不用写shell文件中的第一行(指定bash路径)。因为方式三是将hello.sh做为参数传给sh(bash)命令来执行的。这时不是hello.sh本身来执行,而是被人家调用执行,因而不要执行权限。这么不用指定bash路径天然也好理解了啊,呵呵……。
方式四:在当前的shell环境中执行bashshell脚本:
复制代码代码以下:
cd /data/shell . hello.sh
或
复制代码代码以下:
cd /data/shell source hello.sh
前三种方式执行shell脚本时都是在当前shell(称为父shell)开启一个子shell环境linux 执行shell脚本,此shell脚本就在这个子shell环境中执行。shell脚本执行完后子shell环境随后关掉,而后又回到父shell中。而方式四则是在当前shell中执行的。
方式五:在shell中启动另外的shell
在运行shell脚本时侯,有三种方法来调用外部的脚本,exec(execscript.sh)、source(sourcescript.sh)、fork(./script.sh)
一、exec(exec/home/script.sh):
使用exec来调用脚本,被执行的脚本会承继当前shell的环境变量。但事实上exec形成了新的进程,他会把主shell的进程资源占用并替换脚本内容,承继了原主shell的PID号linux 执行shell脚本,即原主shell剩下的内容不会执行。
二、source(source/home/script.sh)
使用source或则“.”来调用外部脚本,不会形成新的进程,承继当前shell环境变量,但是被调用的脚本运行结束后,它拥有的环境变量和申明变量会被当前shell保留,相像将调用脚本的内容复制过来直接执行。执行完毕后原主shell继续运行。
三、fork(/home/script.sh)
直接运行脚本,会以当前shell为父进程,形成新的进程,并且承继主脚本的环境变量和申明变量。执行完毕后,主脚本不会保留其环境变量和申明变量。
总结:这样来看fork最灵活,source次之,exec最骇人。
查看哪一个用户用的哪些shell登录:
1.echo$SHELL#查看当前登入的用户所用的shell2.grepusername/etc/passwd看之後一段#查看想要晓得的用户登录所用的shell