Linux中Shell脚本的执行通常有4种方式,分别为:工作目录执行,绝对路径执行,sh执行,Shell环境执行。
1、工作目录执行
工作目录执行,指的是执行脚本时,先进入到脚本所在的目录(此时,称为工作目录),然后使用 ./脚本方式执行
eg:
[root@qfdeu ~]# ./test.sh
‐bash: ./test.sh: Permission denied
[root@qfdeu ~]# chmod 764 test.sh
[root@qfdeu ~]# ./test.sh
Hello Shell
报了权限错误,上一篇博文有提到,这里需要赋权,使用 chmod 764 test.sh 赋权后就可以正常执行了./的意思是说在当前的工作目录下执行hello.sh。
如果不加上./,bash可能会响应找到不到hello.sh的错误信息。因为目前的工作目录 (/data/Shell)可能不在执行程序默认的搜索路径之列,也就是说,不在环境变量PASH的内容之中。查看PATH的内容可用 echo $PASH 命令。现在的/data/Shell就不在环境变量PASH中的,所以必须加上./才可执行
2、绝对路径执行
绝对路径中执行,指的是直接从根目录/到脚本目录的绝对路径
3、sh 执行(不建议),一般这种方式用于脚本的调试
sh执行,指的是用脚本对应的sh或bash来接着脚本执行
进入到test.sh文件所在的目录下:
eg:
[root@qfdeu ~]# sh test.sh
Hello Shell
[root@qfdeu ~]# bash test.sh
Hello Shell
[root@qfdeu ~]# . test.sh
Hello Shell
[root@qfdeu ~]# source test.sh
Hello Shell
注意,若是以方法三的方式来执行,那么,可以不必事先设定Shell的执行权限,甚至都不用写Shell文件中的第一行(指定bash路径)。因为方法三 是将hello.sh作为参数传给sh(bash)命令来执行的。这时不是hello.sh自己来执行,而是被人家调用执行,所以不要执行权限。那么不用 指定bash路径自然也好理解了啊,呵呵
4、Shell 环境执行(不建议)
Shell环境执行,指的是在当前的Shell环境中执行,可以使用 . 接脚本 或 source 接脚本
[root@qfdeu ~]# . test.sh
Hello Shell
[root@qfdeu ~]# source test.sh
Hello Shell