2011-02-05 81 views
7

我已經成功安裝並使用MinGW和msys來編譯和鏈接Windows可執行文件。在32位Vista上的全新安裝(與我以前的成功相同的平臺)時,我遇到了一些令人生厭的行爲:當我在提供的shell環境中鍵入小寫'e'或大寫'P'時,一聲蜂鳴,但沒有人物!含義我不能輸入「make」或「echo」,然後運行這些命令,例如。它是:m-a-k-BEEP!無法在MinGW/msys shell或終端中輸入'e'或'P'

當您通過安裝程序生成的快捷方式調用msys並在shell中導航到c:\ msys \ 1.0 \ bin並且只需雙擊bash時,會在打開的shell中發生這種「e」BEEPing .exe,sh.exe,rxvt.exe(實際上它有一個比一個清脆的BEEP更多的悶音噪聲),但總是小寫的'e'和大寫的'P'不會回顯到終端(或shell?我沒有處理這些術語之間的差異)。

我已經嘗試過自動化的MinGW和msys安裝程序,並在同一端安裝了全新的手動安裝程序。

我不太瞭解shell,或者他們的環境在他們啓動時如何演變,所以我不知道從哪裏開始尋找這種古怪行爲的來源。

+0

在Windows上與git shell有同樣的問題,但不是新鮮的MinGW的bash。 (同樣的修復工作)...也許這是特定的一些MSYS版本? – Kos 2011-08-22 12:32:54

回答

12

我假設你使用Bash。這聽起來像是因爲某些原因,關鍵綁定已經搞亂了。

如果你這樣做的命令:如果 「P」 和 「E」 中的條目丟失,則嘗試這些命令

"E": self-insert 
"e": self-insert 
"P": self-insert 
"p": self-insert 

bind -p|grep -i '"[pE]"' 

你應該得到這樣的結果。

bind '"e":self-insert' 
bind '"P":self-insert' 

很顯然,你不能鍵入的字符,所以輸入他們的相反情況下的版本,按下左箭頭,然後按Alt-U給upcase小「P」或者Alt-1(這是一個較低的 - 「ell」)來壓縮大寫字母「E」(您需要在第一個命令中爲每個「e」執行此操作)。

如果可行,請檢查~/.inputrc文件以查找無效的鍵綁定。此外,請檢查您的啓動文件,如~/.bashrc等。此問題可能與丟失或錯位的引號有關,並且可能是針對類似\eP的某個鍵綁定的,默認情況下,該綁定會綁定到readline函數do-lowercase-version

+0

你的指示完美運作。我能夠看到確實「P」和「e」沒有自插入綁定,添加了它們,一切正常。然後,我開始在四處搜索,並確信在我的'〜/ .inputrc'文件中找到了我添加的違規行,認爲它們是良性的:'echo $ PATH'和 'PATH = $ PATH:/ c/MinGW/msys/1.0/bin中:.」和 'echo $ PATH',無論何種原因導致問題出現時,以及何時解決問題。謝謝! – 2011-02-06 06:38:01

0

在目錄C:\ Documents和Settings \ yourusername,你可以找到一個名爲「.bashrc」中 添加以下兩行 綁定‘‘E’:自我插入’ 綁定「‘P’:自我插入'

Dennis Williamson,非常感謝!這個問題困擾了我很長一段時間。