区分MSYS和MSYS2和CYGWIN

distinguish between MSYS and MSYS2 and CYGWIN

如何区分 MSYS 和 MSYS2 以及 CYGWIN,例如通过命令或预定义的环境变量?

像 Scons 这样的工具需要这种区别来适应生成的命令行,例如通过发出双反斜杠 c:\path\to\file 或反引号 `cygpath -w /c/path/to/file`

背景:我想使用 MSYS2,因为它具有出色的包管理功能。 Scons 在 MSYS2 上生成 /c/path/to/file,但是 csc(Microsoft 的 C# 编译器)只允许 Windows 样式路径。

我不知道有任何环境变量可以可靠地传达此信息,但 uname -s 的输出应该告诉您。

检查系统名称和版本:

case "$(uname -or)" in
    1.*Msys)  system='msys'   ;;
    2.*Msys)  system='msys2'  ;;
    .*Cygwin) system='cygwin' ;;
esac