shell 脚本的六种执行方式
创建一个Shell脚本,方便说明:
# touch /tmp/test.sh
# chmod 755 /tmp/test.sh
# ll /tmp/test.sh
方法一:./test.sh
.代表当前路径,/的意思就是在当前路径下执行test.sh。
如果不加./,bash就会去PATH环境变量里查找,若查找不到,会报错找不到命令。
# cd /tmp
# ./test.sh
方法二:/tmp/test.sh
以绝对路径的方式去执行Shell脚本。
# /tmp/test.sh
方法三:bash /tmp/test.sh
方法四:sh /tmp/test.sh
除了指定绝对路径,也可以切换到Shell脚本的路径,使用bash /tmp/test.sh或sh /tmp/test.sh执行脚本
# bash /tmp/test.sh
# sh /tmp/test.sh
bash和sh这两种方式的效果是一样的,都是将test.sh作为参数传给bash/sh命令来执行的,所以即使test.sh文件没有可执行权限,一样可以执行。
方法五:./tmp/test.sh
方法六:source /tmp/test.sh
前四种方法都是在当前Shell(成为父Shell)开启一个子Shell环境来执行脚本,最后这两种方法则是在当前Shell中执行的。
总结
方式 | 说明 |
---|---|
./test.sh | 执行当前目录下的脚本 |
/tmp/test.sh | 任意目录下皆可执行脚本 |
bash /tmp/test.sh | 脚本无需可执行权限 |
sh /tmp/test.sh | 同上 |
./tmp/test.sh | 在当前Shell中执行脚本 |
source /tmp/test.sh | 同上 |