为什么环境变量的数据可以被子进程所引用?

什么是“子进程”呢?就是说在我目前这个shell的情况下,去打开另一个新的shell,新的那个shell就是子进程。在一般的情况下,父进程的自定义变量是无法在子进程内使用的。但是通过export将变量变成环境变量后,就能够在子进程下面应用了。

子进程仅会继承父进程的环境变量,子进程不会继承父进程的自定义变量,所以你原本bash中的自定义变量在进入了子进程后就会消失不见,一直到你离开子进程并回到原本的父进程后,这个变量才会又出现。

为什么环境变量的数据可以被子进程所引用呢?这是因为内存配置的关系。

理论上是这样的:

  •  当启动一个shell,操作系统会分配一记忆块给shell使用,此内存内的变量可让子进程取用;
  •  若在父进程利用export功能,可以让自定义变量的内容写到上述的记忆块当中(环境变量);
  •  当加载另一个shell时(即启动子进程,而离开原本的父进程了),子shell可以将父shell的环境变量所在的记忆块导入自己的环境变量块当中。


微信公众号: 猿人谷
如果您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】
如果您希望与我交流互动,欢迎关注微信公众号
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

原文地址:https://www.cnblogs.com/heyonggang/p/2848340.html