Cygwin 终端不运行一些本机 Windows 程序

Jon*_*han 3 cygwin

为了与其他 Windows 程序兼容,我必须为 Python 等安装 Windows 版本的 Mercurial(与 Cygwin 版本相比)。

不幸的是,这些本地 Windows 程序在 Cygwin shell 中的交互式输入似乎存在问题。此外,一些本机程序甚至无法运行(msysgit 让我每次都输入“git.cmd”而不是“git”)。

我不想一直在两个终端之间切换。这个问题的最佳解决方法或妥协是什么?

我试过将 CYGWIN=notty 设置为环境变量,但这似乎也无济于事。

谢谢。

ak2*_*ak2 5

您需要使用 Cygwin 控制台(基于标准的 Windows 控制台)而不是默认的 Cygwin 终端。

一种方法是创建一个直接调用 bash 作为登录 shell 的快捷方式,在这种情况下,Windows 会自动为其创建一个控制台窗口。这是在桌面上创建此类快捷方式的命令:

mkshortcut -D -n "Cygwin Console" -i /Cygwin.ico /bin/bash -a --login
Run Code Online (Sandbox Code Playgroud)

  • 那么问题就来了。将`CYGWIN` 设置为`tty` 可以在控制台中启用Cygwin 的“伪终端设备”层,这为您提供了更多Unix 兼容的终端功能(例如,可以使用^Z 挂起进程)。然而,这是基于 Windows 管道的,这意味着本地 Windows 程序在他们期望控制台句柄的地方获得一个管道句柄,而交互式程序通常无法按预期运行。 (3认同)