----正在学习shell,途中做些笔记,整理整理,方便以后翻阅。----
---- RHEL_6.2_x64,GNU bash version 4.1.2(1)-release ----
编写完成一个脚本后,当然就是要运行这个脚本了。在这之前,需要注意下面的这些方面:
1)脚本的命名。linux文件没有硬性要求后缀名。当然为了方便看出文件的类型,shell脚本文件一般都是以.sh结尾,名字则最好能体现出脚本的作用。为了执行脚本时方便,当然短点好啊,可以少敲点。
2)如果把存放这个脚本的目录放到用户的PATH中,那就无比方便了,这时可以在命令上输入脚本名直接回车就运行了。普通用户需要(rx)权限,root仅仅只需要一个执行(x)权限就OK了,任意一个位置的执行(x)权限都行。
3)如果脚本目录不在PATH中,则可以进到脚本目录下,利用./scriptname(点杠脚本名)的方法执行脚本。这种方法是在当前shell中开启一个新的子shell运行脚本,当脚本结束时子shell也就关闭退出了,任何脚本中的变量对当前环境均不影响。普通用户需要(rx)权限,而root仍然仅仅需要一个任意的执行(x)权限。(最常用的)
4)如果想以特殊的选项或者以当前脚本没有指定的特殊条件来启动脚本时候,一般在测试脚本可移植性时,可以明确指定运行脚本的shell类型。此时可以用sh scriptname,或者tcsh scriptname,再或者bash scriptname。脚本运行在当前shell的一个子shell中,同样不会影响当前shell。值得注意的是,使用sh scriptname 调用脚本时,将会关闭一些Bash特定的扩展,脚本可能因此而调用失败。普通用户仅需要此脚本的读权限(r),root则没用任何权限要求。
5)如果想在当前shell执行脚本而不想启动一个新的shell,可以使用source或者.(点号)。在命令行里这样输入source /path/scriptname或者. /path/scriptname(点空格脚本路径脚本名字)这里脚本不需要可执行权限(x),只需要读取权限(r)即可。命令在当前shell力执行,所以任何对环境的改变,将在脚本结束时同样起作用。比如脚本内赋予了一个变量值,脚本结束后,这个变量的值仍然存在。
6)还有一种运行脚本方式,就是sh <scriptname,这也是可行的,但是不推荐使用这种方法,因为这会令脚本失去从stdin读取数据的功能。
所有这些之后,就可以根据自己的需要、喜好执行编写好的脚本了!