MinGW/Cygwin在哪里将环境变量转换成Windows风格?

Where does MinGW/Cygwin convert environment variables to Windows style?

如果您使用的是 Cygwin 或 MinGW bash shell,$PATH 等环境变量采用 "UNIX" 格式 - 使用正斜杠作为目录分隔符并使用冒号分隔多条路径。但是,如果在这个 shell 中,你 运行 类似 cmd.exe /c 'echo %PATH%' 的结果输出是 "Windows" 格式,分别使用反斜杠和分号。

是否在某处记录了这种神奇的转换?或者更好的是,有人可以指出实现这种情况的代码吗?

(我问的原因是因为转换似乎并不总是发生,我试图了解它发生所需的确切条件。)

Unix 和 Windows 路径格式之间的内部转换是 由 path.cc

中的函数执行

https://cygwin.com/git/gitweb.cgi?p=newlib-cygwin.git;a=blob;f=winsup/cygwin/path.cc;h=3cb46c9c812e17460d56def2f915b21c7227f3bf;hb=HEAD

当 Cygwin 程序执行 Windows 程序时,生成过程是 由 spawn.cc

中的函数执行

https://cygwin.com/git/gitweb.cgi?p=newlib-cygwin.git;a=blob;f=winsup/cygwin/spawn.cc;h=37db52608e24e866e80401668ef13562f0cb67ea;hb=HEAD

如果您需要更多详细信息或要求澄清,请使用 cygwin 邮件列表。