2014-04-12 127 views
18

我試圖在bash.exemintty.exe上找到的Cygwin64/bin(例如,usr/bin/bash.exe)上運行Unix命令。當我嘗試運行Unix命令ls時,我得到bash: ls: command not found。但是,當我單擊Cygwin終端的桌面圖標並在產生的Cygwin終端中輸入ls時,像ls這樣的Unix命令可以工作!爲什麼Unix命令不能在bash.exemintty.exe上工作,但在終端上點擊圖標的結果?此外,bash.exemintty.exe帶來的兩個炮彈有什麼不同?Cygwin Bash.exe與mintty.exe

回答

28

這兩個程序沒有任何方式替代彼此。 Bash是shell,MinTTY是terminal emulator。 MinTTY通常在你自己的內部運行你的用戶的shell,這可能是也可能不是Bash。也就是說,你通常一起使用這兩個程序。

如果您檢查Cygwin的setup.exe構建的MinTTY快捷方式,您會發現它不是該程序的簡單啓動。它運行它爲mintty -,它告訴MinTTY將用戶的shell作爲「登錄」shell運行。

這是您遇到的問題。如果您運行的是bash.exe而沒有選項,則只需使用其默認配置即可得到裸機,這意味着它不會執行將Cygwin /bin添加到您的PATH之類的操作。同樣,如果您在沒有選項的情況下運行mintty.exe,它將運行沒有選項的用戶shell。當您給破折號mintty.exe而不是程序名稱時,它會將用戶的shell作爲登錄shell運行:bash -l,而不僅僅是bash。該選項使Bash在啓動後立即讀入一堆啓動腳本,該命令會設置命令PATH以及更多內容。

因此,如果你不得不MinTTY外面跑bash.exe出於某種原因,你可能會說,當通過mintty -運行bash -l拿到行爲有點更接近的bash.exe。但是,您將失去所有終端仿真器功能。例如,MinTTY比Windows的控制檯具有更好的複製粘貼行爲,特別是在Windows 8和更早版本上。

(視窗10包括a much-improved console,但MinTTY仍然是更好的,恕我直言,與Cygwin的工作時尤爲如此。)

man mintty在爲所有的事情MinTTY爲您做更全面的解釋Cygwin的命令提示符。這個特定的問題在INVOCATION部分the MinTTY manual page中回答。

+1

謝謝你的回答! –

相關問題