【发布时间】:2016-03-18 06:31:31
【问题描述】:
我一直相信 环境变量 存在于当前用户登录的 shell 中。但是最近我开始研究自己的外壳,并更多地了解 Linux 是如何在底层工作的。现在在我看来,环境是独立于外壳的,并且在其他地方(在内核中?)处理。所以我的问题是它到底是如何工作的?系统的哪个部分负责维护环境?
例如,Bash 区分了export-ed 和未导出的变量,后者不被子shell 继承。这是否意味着系统中的每个进程都有自己的一组shell变量?
【问题讨论】:
-
系统上的每个进程都有自己的环境,shell 本身就是进程。在 fork 进程时,内核会处理环境的继承,因为环境是进程的一部分。每个进程都可以随意修改自己的环境。
标签: linux shell environment-variables