我已经安装了 cygwin(我对它不是很熟悉),并尝试从它运行本机 Windows shell 应用程序(确切地说,msbuild.exe 是 .NET 框架的构建工具)。
当我从普通 cygwin bash shell 运行该应用程序时,该应用程序的输出将按应有的方式显示,并且文本颜色与我在 Windows 命令行中通常看到的一样。
但是当我从 mintty 终端执行程序时,输出没有颜色,所有文本都是默认的前景色。我很困惑,因为我本来以为颜色编码是标准的 ANSI 颜色代码转义字符……
这可以修复吗?
答案1
该应用程序很可能使用 Windows 控制台 API,而不是 ANSI 颜色序列。不过,Mintty 是一个 Unix 终端(基于 Cygwin 的 pty 实现),而不是 Windows 控制台包装器,因此这些控制台 API 调用将不起作用。
目前,mintty 中还没有办法解决这个问题,尽管在http://code.google.com/p/mintty/issues/detail?id=56。同时,解决方法是在控制台窗口中启动相关程序。'cygstart' 实用程序是一种方便的方法。
答案2
原生 Windows 控制台程序通常无法在 Cygwin 终端仿真器(如 mintty)中很好地运行。请参阅Cygwin 文档解释一下。看不到颜色是一种可能的症状;更糟糕的症状是无法在应用程序中输入内容。
有其他比内置控制台好得多的控制台程序。我目前在 Windows 下选择的终端是 cygwin 或 stdio 程序的 mintty,以及控制台2适用于 Windows 控制台程序。此主题已在此站点上讨论过多次:
Windows 的高级命令行编辑?
https://superuser.com/questions/87441/alternative-windows-command-shell-and-console
Windows“cmd”替代品
通过常规复制粘贴免费替代 cmd/powershell
答案3
您可以使用 bash.exe 代替 mintty:
右键单击 cygwin 的快捷方式,将其从 C:\cygwin64\bin\mintty.exe -i /Cygwin-Terminal.ico - 更改为 C:\cygwin64\bin\bash.exe --login -i