shell脚本文件不加执行权限,直接使用". test.sh"(中间有空格)也能运行

来源:8-2 一入 Shell 深似海,酷炫外壳惹人爱(下)

慕少7118645

2020-03-10

我没有将test.sh加上执行权限(没有+x),然后终端执行如下

. test.sh  //中间有个空格

好像也能执行。

有什么区别,养成这样的习惯会不会有啥问题?

写回答

1回答

Oscar

2020-03-12

这样执行也是可以的。

实际上,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 命令的手册。

//img.mukewang.com/szimg/5e6993e009c5a18d25041186.jpg


一般我们还是会给 Shell 文件加上可执行权限,方便用所有的方式来执行。

2
2
Oscar
回复
慕少7118645
独帅帅不如大家一起帅~
2020-03-12
共2条回复

Linux核心技能与应用

一网打尽Linux必备核心技能,面试、升职必备的“敲门砖”。

2091 学习 · 692 问题

查看课程