执行脚本
为了能使当前用户运行脚本,它应该有可执行权限。完成后脚本就可以象其他命令一样运行:
#chmod u+x script_name.sh
建立在子shell中的变量,函数和别名等只有子shell使用。当那个shell退出,父shell重新得到控制的时候,所有的东西都被清空,脚本对shell状态所作的改变耶全部清除。
如果你没有把 scripts
的目录放到PATH
里面,当前目录也不在PATH
变量中,那么你可以这样来执行脚本:
./script_name.sh
脚本也可以被明确地指定shell执行,不过通常我们只有在想得到特殊的行为时候才这样做,比如脚本是否能在另外一个shell里面工作或者打印调试的信息:
特定的shell会成为当前shell子shell来运行脚本。当你想以特殊的选项或者以脚本没有指定的特殊条件来启动脚本时候可以这么做。
如果你想在当前脚本执行脚本而不想启动一个新的shell,你可以使用source:
|
source = . |
这里脚本不需要可执行权限。命令在当前shell力执行,所以任何对环境的改变,将在脚本结束时同样起作用.
哪个Shell来执行脚本?
当在子shell运行脚本时,你应该定义哪个shell来运行脚本,你编写的脚本的shell类型可能不是你系统默认的,所以用错误的shell来运行你输入的命令可能最终出错。
第一行决定了启动的shell,第一行的开始2个字符应该是#!,然后紧跟解释后面命令的shell的路径。空白行也被认为是一行,所以不要让你的脚本以空白行开始。
#!/bin/bash
调试Bash脚本
当一些事情不能按照计划进行,你需要确定到底是什么导致了脚本运行失败。Bash提供了大量的调试特性。最通常的做法是使用 -x
选项来启动子shell,这将让整个脚本在调试模式下进行。每个命令和他附加参数的信息会在执行之前被展开并且送到标准输出打印。
#bash -x script_name.sh