2008-10-14 18 views
8

在工作中,我使用了很多Cygwin,因为它为我提供了广阔的Windows沙漠中的一片绿洲。我不可避免地最终通过bash shell运行了一些非Cygwin程序,比如构建脚本(内部创建的批处理文件)和Subversion CLI二进制文件(我安装了Windows)。 99%的时间,我没有任何问题,使用此设置。然而,另外1%会导致一个奇怪的问题:输入密钥有时在cygwin下的Windows应用程序中无法识别

对于构建脚本和SVN,大部分时间都是正确解释输入键。例如,我将启动数据库创建脚本,它会提示我输入服务器名称。我输入“localhost”并回车。一切安好。然后,如果出现错误,它会结束,并使用more打印出来。我按下的任何键都不会被more识别。我不得不按Ctrl-C。

同样,如果我做了Subversion更新,通常一切都很好。然而,在交互式冲突解决方案发生的情况下,通常我会输入“tf”作为“他们的完整”并回车,但没有任何反应。我必须Ctrl-C离开它,并通过强制合并重新运行更新,或者在Windows中使用TortoiseSVN来执行此操作。

任何想法为什么Cygwin似乎随机不会通过输入键通过程序?我认为这可能与Unix和Windows风格的行结尾有关,所以我尝试手动输入这些字符,但这似乎没有什么区别。谢谢。

编辑:我刚刚发生过这种事,我意识到了一些事情。这是SVN提示我输入密码。我输入密码,它回显到屏幕(坏),然后回车......没有任何东西。点击再输入几次,光标移动,但没有任何反应。我按Ctrl-C,它将我转回到bash,然后说“bash:[我的密码]:命令未找到”,后面跟着许多等于我按下回车键的次数的新提示。所以发生了什么事是输入从来没有将它输入到SVN中,但是在SVN退出后不知何故被bash读取。我认为这可能会帮助人们弄清楚发生了什么。

+0

是你确定它不只是你的输入键被破坏了吗? :-) – JesperE 2008-10-14 20:03:22

回答

11

不幸的是,我认为你遇到了Cygwin和windows/dos控制台应用程序的其中一个问题。请参阅“控制台程序”http://www.cygwin.com/cygwin-ug-net/using-effectively.html

这只是对Windows控制台应用程序的限制。例如,这种行为对于Windows myqsl cmd客户端和svn客户端来说很常见。

这里有一些事情要注意的 - 我已经成功地用这种方法既在Windows的MySQL,以及Windows SVN客户端:

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

2)不要使用RXVT - 而应该使用基本的Cygwin cmd提示符。这是因为RXVT意味着“tty”并且会打破上面的#1。

3)请尝试为您遇到问题的cmds找到一个“原生”Cygwin包,而不是使用Windows cmds。 (尽管如此,我还没有找到cygwin的1.6 svn客户端。)

祝你好运! 达斯汀

相关问题