在工作中,我经常使用Cygwin,因为它在广阔的Windows沙漠中为我提供了一片小绿洲.我不可避免地最终通过bash shell运行一些非Cygwin程序,例如构建脚本(内部创建的批处理文件)和Subversion CLI二进制文件(我安装了Windows文件).99%的时间,使用此设置我没有任何问题.然而,另外1%导致了一个奇怪的问题:
使用构建脚本和SVN,大多数情况下正确解释了输入键.例如,我将启动数据库创建脚本,它将提示我输入服务器名称.我键入"localhost"并按Enter键.一切安好.然后它会结束,如果有错误,并使用打印出来的东西more
.没有按下的键被识别出来more
.我必须使用Ctrl-C.
同样,如果我进行Subversion更新,通常一切都很好.然而,在发生交互式冲突解决的情况下,我通常会输入"tf"作为"他们已满"并点击输入,但没有任何反应.我必须使用Ctrl-C并使用强制合并重新运行更新,或者在Windows中使用TortoiseSVN来执行此操作.
知道为什么Cygwin似乎随机地没有将输入键传递给程序吗?我认为它可能与Unix与Windows风格的行结尾有关,所以我尝试手动输入这些字符,但这似乎没有什么区别.谢谢.
编辑:我刚刚再次发生这件事,我意识到了一些事情.这是SVN提示我输入密码.我输入了密码,它回显到屏幕(坏)并点击输入......没有.点击进入几次,光标移动,但没有任何反应.我按下Ctrl-C然后它将我转发回bash,然后说"bash:[我的密码]:命令未找到",然后是一些新的提示,等于我按下回车键的次数.所以发生的事情是输入从未进入SVN,但在SVN退出之后以某种方式被bash读取.我认为这可能有助于某人弄清楚发生了什么.
不幸的是,我认为你遇到了Cygwin和windows/dos控制台应用程序的一个问题.请参阅http://www.cygwin.com/cygwin-ug-net/using-effectively.html上的 "控制台程序" .
这只是Windows控制台应用程序的限制.例如,对于Windows myqsl cmd客户端和svn客户端,此行为很常见.
以下是一些需要注意的事项 - 我已经成功地将这种方法用于Windows mysql以及Windows svn客户端:
1)尝试确保您的CYGWIN环境变量中没有"tty",看看是否有帮助(在My Computer-> properties-> advanced-> Environment Variables中取消设置并关闭/重启任何cygwin bash提示).
2)不要使用RXVT - 而是使用基本的Cygwin cmd提示符.这是因为RXVT意味着"tty"并将突破#1.
3)尝试为您遇到问题的cmd找到"本机"Cygwin软件包,而不是使用Windows cmds.(但我还没有为cygwin找到1.6 svn客户端.)
祝好运!达斯汀