2008-10-14 20 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客戶端。)

祝你好運! 達斯汀

相關問題