Shell脚本的三种执行方式和区别
Shell脚本的三种执行方式和区别
编写脚本test.sh
#!/bin/bash
date
echo $$ #显示当前shell的pid
执行结果:
由此总结出三种Shell脚本的三种执行方式和区别
- ./的方式执行
打开一个子shell进程,并执行脚本
-
bash方式执行
同上,打开一个子shell,并运行脚本
-
source方式执行
是在当前的shell下执行
-
补充:工作中还见过用“点命令”执行脚本:
在脚本的开头加上[. ]:
. /cirsapp/script/common/cirs_batch_hesd.sh
注:cirs_batch_hesd.sh里都是定义的function,通过上面的方式导入函数到当前shell。
总结:当一个shell脚本执行的时候,会产生一个新的执行环境,如在终端中使用sh test.sh或./test.sh 会产生一个新的shell环境,在此环境中设置的变量值不会影响父shell中(即终端中)的值。使用source和点命令的目的可以理解为让脚本在父shell中执行,在脚本中设置变量值会影响父shell中的值。