当你写完一个脚本以后,你可以通过sh scriptname
1或者bash scriptname
来调用它(不过不推荐使用sh <scriptname
来调用脚本,因为这会禁用脚本从标准输入(stdin)中读入数据)。更加方便的方法是使用chmod
命令使脚本可以被直接执行。
执行命令:
chmod 555 scriptname
(给予所有用户读取和执行的权限)2
或者
chmod +rx scriptname
(给予所有用户读取和执行的权限)
chmod u+rx scriptname
(仅给予脚本所有者读取和执行的权限)
当脚本的权限被设置好后,你就可以直接使用./scriptname
3进行调用测试了。如果脚本文件是以sha-bang开头的,那么它将自动调用指定的命令解释器运行脚本。
当你在完成调试与测试后,你可能会将脚本文件移至/usr/local/bin
(使用root权限)文件夹中,使得脚本可以被所有用户以系统调用的方式进行调用。那么你可以在命令行中输入scriptname [ENTER]
直接调用脚本。
1. 注意,当你使用sh scriptname
调用Bash脚本时将会禁用与Bash特性相关的功能,脚本有可能会执行失败。 ↩
2. 脚本同时需要读取和执行的权限,因为shell需要读取脚本执行。 ↩
3. 为什么不直接使用scriptname
来调用脚本?为什么当工作目录($PWD)正好是scriptname
所在的目录时也不起作用?这是因为一些安全原因,当前目录(./
)并不会被默认添加到用户的$PATH路径中。因此需要用户显式的使用./scriptname
在当前目录下调用脚本。 ↩