MSYS2:如何禁用路径名到驱动器号的自动翻译?

MSYS2: How to disable automatic translation of pathname to drive letter?

我在 MSYS2 shell 中测试用 mingw 编译的 C 程序时遇到问题:我编写了一个命令行解析器,它根据 windows 约定接受选项(以 /).如果我这样调用我的程序来生成输出文件:

./example.exe /o test

最终在 argv[1] 中的实际上是 O:/。从控制台 window 运行 CMD.EXE 测试时它工作正常。这个真正最小的程序演示了行为:

#include <stdio.h>

int main(int argc, char **argv)
{
    if (argc > 1)
    {
        puts(argv[1]);
    }
    return 0;
}
$ ./example.exe /o
O:/

所以我想这是 MSYS2 shell 试图提供帮助,并将根目录下看起来像单字母路径的内容替换为驱动器字母语法。有没有办法禁用此行为?老是启动CMD.EXE测试有点麻烦

您可以使用 MSYS2_ARG_CONV_EXCL 环境变量来禁用此行为。例如,尝试 运行:

MSYS2_ARG_CONV_EXCL=\* ./example.exe /o test