《Advanced Bash-Scripting Guide》 in Chinese

2.1 调用一个脚本

当你写完一个脚本以后,你可以通过sh scriptname1或者bash scriptname来调用它(不过不推荐使用sh <scriptname来调用脚本,因为这会禁用脚本从标准输入(stdin)中读入数据)。更加方便的方法是使用chmod命令使脚本可以被直接执行。

执行命令:

chmod 555 scriptname(给予所有用户读取和执行的权限)2

或者

chmod +rx scriptname(给予所有用户读取和执行的权限)

chmod u+rx scriptname(仅给予脚本所有者读取和执行的权限)

当脚本的权限被设置好后,你就可以直接使用./scriptname3进行调用测试了。如果脚本文件是以sha-bang开头的,那么它将自动调用指定的命令解释器运行脚本。

当你在完成调试与测试后,你可能会将脚本文件移至/usr/local/bin(使用root权限)文件夹中,使得脚本可以被所有用户以系统调用的方式进行调用。那么你可以在命令行中输入scriptname [ENTER]直接调用脚本。

1. 注意,当你使用sh scriptname调用Bash脚本时将会禁用与Bash特性相关的功能,脚本有可能会执行失败。
2. 脚本同时需要读取和执行的权限,因为shell需要读取脚本执行。
3. 为什么不直接使用scriptname来调用脚本?为什么当工作目录($PWD)正好是scriptname所在的目录时也不起作用?这是因为一些安全原因,当前目录(./)并不会被默认添加到用户的$PATH路径中。因此需要用户显式的使用./scriptname在当前目录下调用脚本。