父子shell间export变量传递方式是单向值传递;
普通变量互不影响,不发生传递。
父shell变量不会被子shell程序默认引用。加上export才可以。
而shell script执行都是另开一个子shell。无论是sh方式执行,还是直接执行。
但source *.sh 则会在当前shell下执行(这也是为什么更改系统设置时常用source执行)。
子shell变量无论是不是export,都不会被父shell引用。
即使是父shell的export变量,子shell内更改了它,子shell内会改变,但是对父shell不会造成任何影响,加上export也不会。
也可以理解为父shell向子shell传递的全局变量为值传递,而非引用传递。子shell内全局变量(export),对父shell不可见,局部变量就更不可见。
总之:父子shell间export变量传递方式是单向值传递,普通变量互不影响,不发生传递。