shell脚本文件不加执行权限,直接使用". test.sh"(中间有空格)也能运行
来源:8-2 一入 Shell 深似海,酷炫外壳惹人爱(下)

慕少7118645
2020-03-10
我没有将test.sh加上执行权限(没有+x),然后终端执行如下
. test.sh //中间有个空格
好像也能执行。
有什么区别,养成这样的习惯会不会有啥问题?
写回答
1回答
-
这样执行也是可以的。
实际上,Shell 的执行有多种方法。
1. 将 Shell 脚本作为程序运行:
需要使用 chmod 命令给 Shell 脚本加上执行权限。通过这种方式运行脚本,脚本文件第一行的 #!/bin/bash 一定要写对,好让系统查找到正确的解释器。
执行的方式是:
./test.sh
2. 将 Shell 脚本作为参数传递给 Bash 等解释器:
通过这种方式运行脚本,不需要在脚本文件的第一行指定解释器信息,写了也没用。所以不用 chmod 来给文件添加可执行权限,也可以执行。
执行的方式是:
bash test.sh
3. 用 source 命令来执行 Shell 脚本文件:
source 是 Shell 内置命令的一种,它会读取脚本文件中的代码,并依次执行所有语句。你也可以理解为,source 命令会强制执行脚本文件中的全部命令,而忽略脚本文件的权限。所以不用 chmod 来给文件添加可执行权限,也可以执行。
执行的方式是:
source test.sh
也可以简写为:
. test.sh
上面两种写法的效果相同。对于第二种写法,注意点号(.)和文件名中间有一个空格。
你可以用
man source
来查看 source 命令的手册。
一般我们还是会给 Shell 文件加上可执行权限,方便用所有的方式来执行。
222020-03-12
相似问题