bash 如何即时更改环境变量?

bash 如何即时更改环境变量?

fork()我们知道,只有在系统调用之后和之前的一段时间内才能更改进程的环境变量集exec(),例如,这样的操作只能通过适当的 API 从父进程到子进程。

但是,当我们使用export内置的 bash 时,bash 会以某种方式更改当前进程(shell 实例)的环境变量。

这是怎么做到的?是不是用了一些卑鄙的手段?

答案1

bash只是更新其内存中的变量。尽管有这个名称,环境变量只是一个 shell 变量,其值被复制到任何子进程的环境中。当 shell 实例启动时,“名称”(第一个 之前的部分=)是有效 shell 标识符的环境字符串用于创建设置了导出属性的 shell 变量。当启动一个新进程时,任何具有导出属性集(无论是来自环境还是稍后设置)的 shell 变量都会添加到该进程的环境中。

相关内容