source、sh、./执行脚本对变量的影响

shell脚本中的变量:

  • local一般用于局部变量声明,多在在函数内部使用。
  • shell脚本中定义的变量是global的,其作用域从被定义的地方开始,到shell结束或被显示删除的地方为止。
  • shell函数定义的变量默认是global的。
  • 函数定义的变量可以被显示定义成local的,其作用域局限于函数内。
  • 函数的参数是local的。
  • 如果同名,shell函数定义的local变量会屏蔽脚本定义的global变量。

source、sh、./的区别

  • sh filename.sh与./filename.sh没有区别,都是重新建立一个子shell,这个子shell会继承父shell的环境变量,但是父shell中的定义全局变量不会带到子shell,子shell中的定义的全局变量也不会被带回父shell。
  • source filename.sh 只是简单地读取脚本里面的语句依次在当前shell里面执行,没有建立新的子shell。因此两个文件中的全局变量都是共享的。

猜你喜欢

转载自www.cnblogs.com/tongyishu/p/12377782.html