也有人说是四种,分别是工作目录执行、绝对路径执行、sh执行与shell环境执行
其实工作目录执行与绝对路径执行都是把这个shell脚本作为可以执行程序,其实是相同的,一个是相对路径一个是觉得路径
- shell脚本作为可以执行程序
./test.sh #相对路径
#或者
/data/test.sh #觉得路径
注意,一定要写成 ./test.sh,而不是 test.sh,运行其它二进制的程序也一样,直接写 test.sh,linux 系统会去 PATH 里寻找有没有叫 test.sh 的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 里,你的当前目录通常不在 PATH 里,所以写成 test.sh 是会找不到命令的,要用 ./test.sh 告诉系统说,就在当前目录找。
如果报没有权限
[root@localhost php]# ./test.sh
-bash: ./test.sh: Permission denied
就添加shell脚本文件执行权限
chmod +x ./test.sh
- 作为解释器参数
是用脚本对应的sh或bash来接着脚本执行
sh test.sh
bash test.sh
- shell环境执行
是在当前的shell环境中执行,可以使用 . 接脚本 或 source 接脚本
[root@localhost php]# . test.sh
Hello World !
[root@localhost php]# source test.sh
Hello World !
使用”source”或”.”读入或者加载指定的shell脚本文件son.sh,然后依次执行shell脚本中son.sh的所有语句,这些语句将作为当前父shell脚本father.sh进程的一部分执行。因此使用”source”与”.”时,可以将son.sh自身脚本中的变量的值或函数的返回值传递到当前的父shell脚本father.sh中使用(这是第三种与前两种最大的区别)。