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