环境变量的性质/起源/传递



我正在寻求帮助以了解环境变量的复杂性,因为我通过在线搜索找到的信息不够详细。

要点 1)究竟什么是环境变量?特别是如果它们是预定义的、包容性的并且内置于许多操作系统?

要点 2)环境变量的操作范围是什么?它们是否仅在与shell(Linux)或文件浏览器(Windows)一起使用时才起作用,或者它们是否可以通过所有程序和脚本(如Python或C++)访问?它们是否类似于标准输入/输出/错误?

要点 3)谁负责创建环境变量?它们是由父进程通过fork()exec()等方法为每个程序设置的,还是由操作系统确定的?

要点 4)环境变量是如何传递的?子进程是否继承其父进程设置的变量,对父进程的变量所做的更改是否也适用于子进程,或者子进程是否从操作系统接收变量的新副本?

第5点)环境变量是一个标准化的概念,在操作系统、初始化或某个中央机构中是一致的,还是在没有集中或标准化遗产的情况下逐案创建的?例如,PYTHONPATHPATH之间有什么关系吗?

根据我的研究,这是我目前的理解。如果需要更正,请告诉我。

答案 1)环境变量是在分叉时从父进程传递到子进程的字符串集合。

答案 2)它们的作用域适用于所有进程,因为它是父进程和子进程之间的关系,除非父进程采取特定操作,例如删除所有继承的环境变量。

答案 3)环境变量由父级创建,初始环境变量集由所有进程的父级 init 建立。

答案 4)传递环境变量的过程发生在父进程执行 fork() 和 exec() 函数的过程中,它可能是通过类似于 set_env(...) 的方法完成的。但我还没有深入研究它。

答案 5)我对这个问题没有任何历史背景。我不知道。

最新更新