关于shell变量的继承总结
2018-08-31 13:18
274 查看
结论:
默认,父shell和子shell的变量是隔离的。
sh方式运行脚本,会重新开启一个子shell,无法继承父进程的普通变量,能继承父进程export的全局变量。
source或者. 方式运行脚本,会在当前shell下运行脚本,相当于把脚本内容加载到当前shell后执行,自然能使用前面定义的变量。
验证:在子shell中调用父shell普通变量
[root@gjt scripts]# echo $b [root@gjt scripts]# echo $a [root@gjt scripts]# cat test1.sh export a=haha echo "test1: $a" echo "test1: $b" sh /root/scripts/test2.sh [root@gjt scripts]# cat test2.sh echo "test2:$a" echo "test2:$b" [root@gjt scripts]# export b=gaga [root@gjt scripts]# sh test1.sh test1: haha test1: gaga test2:haha test2:gaga [root@gjt scripts]# echo $a [root@gjt scripts]# #最后的$a输出为空,说明子shell运行结束后,其定义的全局变量和普通变量均自动销毁。验证:在父shell中无法调用子shell定义的export全局变量
注意:测试过程中如果使用了source运行脚本,请退出终端或unset再进行其他测试,避免变量的值对其他验证有影响。
相关文章推荐
- 关于C++中的虚拟继承的一些总结(虚拟继承,覆盖,派生,隐藏)
- 关于实现c#多继承的总结
- shell 总结之特殊变量:位置变量 $1 ,$* ,$?
- SHELL 关于变量的赋值和脚本中的子SHELL中变量的变化
- Bash Shell:变量总结
- 关于继承及父类引用指向子类的一些总结
- shell变量计算长度及加减运算方法总结
- linux系统中关于shell变量$*与$@的区别
- 总结linux环境几个特殊的shell变量
- 关于java的环境变量的一点总结
- C\C++编译器关于变量的内存分配顺序总结
- linux总结(2)——环境变量与shell
- 关于静态变量,静态代码块,实例变量,实例代码块,构造函数的执行顺序的总结
- 关于C++中的虚拟继承的一些总结
- 关于C++中的虚拟继承的一些总结
- 【总结】关于shell执行,export 和 source
- 关于基类继承类变量示例化
- 关于变量的继承
- 关于static静态的、继承、接口interface、final关键字、单例设计模式总结
- 关于shell变量的第二个shell脚本