在Cygwin下的Windows应用程序中,有时会出现回车键未被识别的情况。

9
在工作中,我经常使用Cygwin,因为它为我在广阔的Windows环境下提供了一个小绿洲。我不可避免地要通过bash shell运行一些非Cygwin程序,比如内部创建的批处理构建脚本和Subversion CLI二进制文件(我已经安装了Windows版)。99%的时间,我使用这个设置没有任何问题。然而,另外1%会引起一个奇怪的问题:
对于构建脚本和SVN,大多数情况下回车键被正确识别。例如,我将启动数据库创建脚本,它会提示我输入服务器名称。我输入“localhost”并按下回车键,一切正常。然后到了最后,如果有错误,就会使用more打印出来。但是我按下的任何键都无法被more识别。我必须使用Ctrl-C退出。
同样地,如果我进行Subversion更新,通常一切都很好。但是,如果发生交互式冲突解决,我通常会输入“tf”表示“theirs-full”,然后按下回车键,但什么也不会发生。我必须使用Ctrl-C退出,然后使用强制合并重新运行更新或在Windows中使用TortoiseSVN。
你知道为什么Cygwin似乎随机地不会将回车键传递给程序吗?我考虑过这可能与Unix和Windows风格的换行符有关,所以我尝试手动输入这些字符,但似乎没有任何区别。谢谢。
编辑:我又遇到了这个问题,并意识到了一些事情。它是SVN提示我输入密码。我输入了密码,它把密码回显到屏幕上(不好),然后按下回车键……什么也没发生。我再按几次回车键,光标移动了,但什么也没发生。我按下Ctrl-C,它把我退回到bash,然后bash说“bash:[我的密码]:找不到命令”,紧接着是等于我按下回车键次数的新提示。所以发生的事情是输入从未传递给SVN,但在SVN退出后被bash读取了。我认为这可能会帮助某人找出问题所在。

你确定不是你的回车键坏了吗? :-) - JesperE
是的,我确定。它在所有运行于Cygwin之外的Windows应用程序中百分之百地工作,并且在Cygwin内部的*nix应用程序中也是如此。只是在使用Cygwin内的Windows应用程序时,有些时候会失败。 - rmeador
2个回答

11

很遗憾,我认为你遇到了Cygwin和Windows/DOS控制台应用程序的问题之一。请参阅http://www.cygwin.com/cygwin-ug-net/using-effectively.html中的“控制台程序”。

这只是Windows控制台应用程序的限制。例如,Windows MySQL cmd客户端和SVN客户端都有这种行为。

以下是需要注意的一些事项 - 我已经成功地在Windows mysql和Windows svn客户端中使用了这种方法:

1)尝试确保您的CYGWIN环境变量中没有“tty”,看看是否有帮助(在“我的电脑”->“属性”->“高级”->“环境变量”中取消设置并关闭/重新启动任何cygwin bash提示)。

2)不要使用RXVT - 而是使用基本的Cygwin cmd提示符。这是因为RXVT意味着“tty”,会破坏上述#1。

3)尝试找到与您遇到问题的命令相关的“本地”Cygwin软件包,而不是使用Windows命令。(我还没有找到适用于cygwin 1.6的svn客户端。)

祝你好运! 达斯汀


2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接