可以启动MSYS2默认 shell 程序(bash),从三个启动器中进行选择,这些启动器还设置了环境变量MSYSTEM
。特别:
msys2_shell.bat
将其设置为MSYS
mingw64_shell.bat
将其设置为MINGW64
和mingw32_shell.bat
将其设置为MINGW32
。 除了shell的提示符外,可见的区别是:
$MSYSTEM
导出; uname
输出基于$MSYSTEM
; $MSYSTEM
为MINGW*
时,/mingw*/bin
是$PATH
中的第一个路径。 假设我们有
/usr/bin/gcc
,/mingw64/bin/gcc
,/mingw32/bin/gcc
,$MSYSTEM
设置值的明智结果是我们将使用不同的编译器生成不同的二进制文件(POSIX或本机32/64)。$MSYSTEM
值确定的其他重要区别是什么? pacman
受子系统影响吗? 最佳答案
以下摘自MinGW-w64贡献者Ray Donnelly的post。它启发了这个主题,是我的问题的重要序言。
在Ray Donnelly的帖子中,构成系统的首要任务是PATH
变量,因为根据目录优先级,Google的存储库工具将使用MSYS2或MinGW软件包构建。
实际上,在MSYS2和MinGW shell 之间切换的shell
脚本会导出环境变量MSYSTEM
及其参数mingw32|mingw64|msys
并获取/etc/profile
的源。后者又根据PATH
的值设置MSYSTEM
。对于MSYS2,PATH
一般是/usr/local/bin:/usr/bin:/bin
,而对于MinGW 64来说是/mingw64/bin:/usr/local/bin:/usr/bin:/bin
,因此运行gcc
编译器将相应地执行MSYS2或MinGW版本。
还有其他小环境。变量,例如MANPATH
在调用正确的二进制文件后阅读正确的手册,或PKG_CONFIG_PATH
在构建时阅读正确的lib文件。
至于pacman
,它不受影响并不完全是事实,如@David Grayson的评论。
MSYS2 wiki模糊地确认:
Ray Donnelly在另一个post中再次阐明了这些内容:
加起来:$MSYSTEM
值确定的其他重要区别是什么?
直接的显着差异是@David Grayson标识的路径变量的相关值。
是否有任何使用此变量的二进制文件?
可以肯定地说,没有直接读取$MSYSTEM
的特定二进制文件,但是大量软件使用/读取基于$MSYSTEM
的上述路径变量。pacman
是否受子系统影响?
是。
关于mingw - MSYS与MinGW:内部环境变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37460073/