shell脚本学习---005(. 和sh 和 source 和 ./ 的使用以及区别)
这几个命令都是执行脚本的语句 ,均可以带参数执行,和普通的脚本作用相同 。
. filename(注意之间有个空格)和source filename的作用是相同的 ,相当于在当前的shell中将文件中的语句一个个执行一遍,相当于把里面的语句一行行的取出来并执行,所以里面定义变量等操作在外面也可以用 。
./ 也是执行脚本文件,同sh一样,脚本中定义的变量不能在外面使用,但此时需要对文件赋予相应的执行权限,没有执行权限的脚本文件不能用此命令来执行 。这个又名fork的咨询你个方式 。
sh 执行文件中的脚本,作用和./基本相同,创建一个新的子进程,子进程和父进程之间的变量是隔离开的 。
exec:
在bash下输入man exec,找到exec命令解释处,可以看到有”No new process is created.”这样的解释,这就是说exec命令不产生新的子进程。exec命令在执行时会把当前的shell process关闭,然后换到后面的命令继续执行 。 进程号不变 。
PS:
export CLASSPATH="classes" 这样定义的话,子进程中可以用这个变量 。
子进程这样定义的话,父进程通过sh fork 调用后也可以用这个变量。