shell脚本执行命令 . 和sh 和 source 和 ./ 的使用以及区别

时间:2023-01-03 09:15:34

这几个命令都是执行脚本的语句 ,均可以带参数执行,和普通的脚本作用相同 。

. 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 调用后也可以用这个变量。