在工作中,我经常使用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读取。我认为这可能有助于找出正在发生的事情。
答案 0 :(得分:11)
不幸的是,我认为你遇到了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”,看看是否有帮助(在我的电脑中取消设置 - >属性 - >高级 - >环境变量并关闭/重启任何cygwin bash提示)。
2)不要使用RXVT - 而是使用基本的Cygwin cmd提示符。这是因为RXVT意味着“tty”,并将打破#1。
3)尝试为您遇到问题的cmd找到“本机”Cygwin软件包,而不是使用Windows cmds。 (但我还没有为cygwin找到1.6 svn客户端。)
祝你好运! 达斯汀答案 1 :(得分:2)
关于薄荷项目的冗长讨论在这里 - http://code.google.com/p/mintty/issues/detail?id=56
在我的案例中提到的一个解决方案(输入本机颠覆的身份验证密码)是 conin - http://code.google.com/p/mintty/downloads/detail?name=conin-0.0.2.zip&can=1&q=label%3ADevelopment
$ conin svn list https://{repo}
Password for 'user': ******