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