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

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

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

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

理论上是这样的:

  •  当启动一个shell,操作系统会分配一记忆块给shell使用,此内存内的变量可让子进程取用;
  •  若在父进程利用export功能,可以让自定义变量的内容写到上述的记忆块当中(环境变量);
  •  当加载另一个shell时(即启动子进程,而离开原本的父进程了),子shell可以将父shell的环境变量所在的记忆块导入自己的环境变量块当中。
posted on 2013-01-06 21:47  猿人谷  阅读(407)  评论(0编辑  收藏  举报