
Windows 系统中,通过 Go 的 windows.Environ() 获取的环境变量列表前两项(如 =::=:: 和 =C:=C:...)并非用户定义变量,而是 Windows 内核维护的“驱动器工作目录映射”——用于记录每个驱动器盘符当前默认路径,属于系统级隐式状态变量。
windows 系统中,通过 go 的 `windows.environ()` 获取的环境变量列表前两项(如 `=::=::` 和 `=c:=c:...`)并非用户定义变量,而是 windows 内核维护的“驱动器工作目录映射”——用于记录每个驱动器盘符当前默认路径,属于系统级隐式状态变量。
在 Windows 平台调用 windows.Environ()(来自 golang.org/x/sys/windows 包)时,返回的字符串切片中前两个元素常呈现如下形式:
str_EnvStrs[0] == "=::=::" str_EnvStrs[1] == "=C:=C:\Users\User\Documents\Source\go\src\github.com\example\project"
这类以 = 开头、形如 =X:=... 的条目,不是标准环境变量,而是 Windows 特有的“驱动器特定当前目录”(Drive-Specific Current Directory)机制的体现。其设计初衷是解决 CMD 多驱动器切换时的工作目录独立性问题——即 C: 和 D: 可各自保有不同当前路径,互不干扰。
▶ 底层来源:GetEnvironmentStringsW
Go 的 windows.Environ() 实际封装了 Windows API GetEnvironmentStringsW,该函数返回一个以
