2017/06/03

在 MinTTY 内运行为 windows cmd 准备的程序

Git for Windows 自带的 MinTTY 是一个非常不错的命令行终端模拟器, 它是从PuTTY的代码里派生的,在MinGW32/W64 和 MSYS1/2 都有使用。 但是MinTTY对于那些为Windows Console (CMD) 定制的程序就有些行为异常。  在这种情况下 就要用到 WinPty.exe 了。

比如我在 MSYS 里面创建了一个脚本:/usr/bin/perl6 它来调用 perl6 MoarVM, 但是MoarVM 是用VC编译的,需要执行在 Windows CMD里面,脚本内容如下:


#!/bin/bash

/bin/winpty.exe /c/rakudo/bin/moar.exe --execname='C:\rakudo\bin\perl6.bat' --libpath="C:/rakudo/share/nqp/lib" --libpath="C:/rakudo/share/nqp/lib" --libpath="C:/rakudo/share/perl6/lib" --libpath="C:/rakudo/share/perl6/runtime" C:/rakudo/share/perl6/runtime/perl6.moarvm $*

没有 winpty.exe的话, moar.exe 和MinTTY 的交互行为就比较奇怪。

关于WinPty的更多信息: https://github.com/rprichard/winpty
Windows 上 Unix PTY 模拟程序的一些介绍: https://blog.toonormal.com/2012/11/17/gcc-msys-mintty-pdcurses-winpty-and-good-times-in-the-shell/
发表评论