標籤:windows cygwin mintty 註冊表 bash
大家知道在Windows下Shift+右鍵菜單可以呼出“在此處開啟命令列視窗”功能表項目,在當前路徑下執行一些命令,非常的方便。是做出的效果:
那麼,如何以這種方式開啟Cygwin的命令列視窗呢? 方法是”外呼裡應“,”外呼“就是通過註冊表添加右鍵功能表項目,使用者點擊該功能表項目時,調用相應程式並傳入參數,其中一個重要的參數就是當前路徑。”裡應“就是在cygwin的啟動指令碼裡檢測路徑參數,若有,則將工作路徑切換到該路徑參數。
下面先介紹手動改動註冊表的方式:
(1) Win + R, 輸入regedit, 斷行符號,啟動註冊表編輯程式,找到HKEY_CLASSES_ROOT\Directory\Background\shell表項
(2) 右擊"shell"->建立->項,輸入建立項的名字,如"在此處開啟Cygwin視窗",此名隨便起,會顯示在功能表項目上。右擊剛才建立的項->建立->項,輸入建立項名字為"command",這個項的名字必須為"command",表示點擊該功能表項目時要執行的命令。雙擊"command"下"(預設)"資料項目,在"數值資料(V)"下輸入如下內容:
"D:\Cygwin\bin\mintty.exe" -i /Cygwin-Terminal.ico /bin/env _T=%V /bin/bash -l
解釋下上面一行內容的含義。"D:\Cygwin\bin\mintty.exe"為mintty所在位置,注意根據cygwin安裝路徑不同有所不同。-i用於指定mintty視窗左上方的表徵圖,/bin/env _T=%V用於設定在啟動mintty後的shell裡面環境變數_T的值,_T為路徑參數,其中%V表示windows傳入的路徑參數。/bin/bash -l 表示啟動登入shell
(3) 若僅進行以上設定,右擊即可出現功能表項目。現在要將其設定成Shift+右擊才出現。找到建立的”在此處開啟Cygwin視窗“,右擊->建立->字串值,名字輸入”Extended“,值保持預設即可。
(4) 進入Cygwin,編輯~/.bash_profile檔案,在尾部添加如下內容:
_T=${_T//\\//} #將所有的'\'替換為'/'if [[ $_T == "" ]]; then _T=${HOME}ficd "${_T}"
(4)至此,完成。
下面介紹一個小工具Context Menu Editor,簡化上面註冊表編輯的繁瑣操作,以管理員權限運行該程式,進行如下設定後,點擊”set“即可加入註冊表。
注意,該工具可以設定功能表項目左側顯示的小表徵圖,實際上是在HKEY_CLASSES_ROOT\Directory\Background\shell\{newItemName}下建立"Icon"資料項目並設定值為表徵圖路徑實現的。該表徵圖與Path文字框裡的-i含義不同。