Linux环境变量

一、子shell

1、子shell,即从当前shell环境新开一个shell环境,这个新开的shell环境就称为子shell(subshell)
2、新开启子shell的环境称为该子shell的父shell
3、子shell和父shell的关系其实就是子进程和父进程的关系
4、每个脚本都在当前环境的一个子shell中运行

二、局部变量与环境变量

了解了子shell的概念后,可以做一个简单的测试

#!/bin/bash
echo "var1=$var1"
echo "var2=$var2"
var2=1
echo "var2=$var2"
image.png

结论:

  • 父shell,会将所有export的环境变量传递给子shell子shell修改环境变量的值,不会影响父shell
  • 子shell读取不到父shell的局部变量

三、shell中启动java进程

public class Test {
    public static void main(String[] args) {
        System.out.println(System.getenv("var1"));
    }
}
#!/bin/bash
var1=1
java Test
image.png

删除环境变量,修改脚本

#!/bin/bash
export var1=0
java Test

image.png

结论:
+shell中启动的java进程,环境变量为当前脚本所在子shell的环境变量
+父shell定义的环境变量,在子shell中可直接修改,但只影响子shell

四、source

由以上测试可知,shell脚本导出的环境变量不会影响当前登录的shell环境,而source命令可将脚本中的环境变量导出到当前shell

#!/bin/bash
export var=1
image.png
  • 登录shell时会自动执行source /etc/profile
  • /etc/profile中引用了/etc/profile.d下的所有脚本
  • source fileName简写为. fileName
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 9,947评论 0 5
  • 个人理解,环境变量就是给那些复杂的语句起一个简单的名字,方便书写,管理 1.环境变量 存储shell会话和工作环境...
    Miridescent阅读 5,468评论 0 2
  • 因为脚步 你我总有 最亲密的接触 因为时光 你总能猜到 我步入了谁的旅途 我却看不到 陪伴你的花朵 开了几回 败了...
    拾刻读书会阅读 1,391评论 0 1
  • 五百里滇池,奔来眼底,披襟岸帻,喜茫茫空阔无边。看:东骧神骏,西翥(zhù )灵仪,北走蜿蜒,南翔缟素。高人韵士何...
    飘在查尔斯顿阅读 4,155评论 0 0
  • 两个人在一起久了,好多习惯、生活方式会慢慢靠近。如果人多到四五个乃至更多,可能这种相互影响相互同化会减弱很多...
    小小小咪咕阅读 3,093评论 0 1