1. 程式人生 > 其它 >cygwin termianl 新增到右鍵選單

cygwin termianl 新增到右鍵選單

edit datetime:2021.1030

FAQ:

  • 問題1:
    安裝cygwin之後,從開始選單開啟終端,目錄一直固定在/home/user中,通過修改windows登錄檔的形式,可以實現在指定位置右鍵開啟cygwin終端,就像右鍵開啟cmd終端一樣:請參考連結2,但是仍然存在一個問題,進入目錄後,提示ls等命令找不到;所有又引出了一個新的問題,環境變數PATH沒有正確設定;或者說,進入的shell不是login shell;

  • 問題2:
    "Cygwin64 Terminal"工具的實際執行命令為:軟體路徑\cygwin64\bin\mintty.exe -i /Cygwin-Terminal.ico -

    ,說明實際是執行的mintty工具,這是一個shell模擬終端,基於putty;
    最後的"-"表示用mintty工具以loginshell登入(具體請參考mintty手冊),根據shell的原理,會最終切換到固定的使用者目錄下: admin@admin-PC: ~$,按照參考連結2,新增的右鍵選單中的命令為:軟體路徑\cygwin64\bin\mintty.exe -i /Cygwin-Terminal.ico -c "cd %V",其中%V表示右鍵時所在的目錄,此時由於不是login shell所以提示 bash: ls: command not found

解決方法:

1:把cygwin64\bin 目錄新增到win系統PATH中

按照參考連結2僅僅修改了目錄,此時如果cygwin64\bin在PATH中的話,那麼ls等命令也可以執行,所以執行ls命令是沒有問題。但是可能.bashrc中的別名命令可能失效。(本方法沒有嘗試,因為我不想把上述路徑加入path,我想繼續保持原生cmd的預設path)

2:修改mintty的執行命令

按照參考連結1#Starting in a particular directory

在添加了右鍵選單的基礎上,修改登錄檔中cygwin -> command的預設值為:
軟體路徑\cygwin64\bin\mintty.exe --dir "%V" /bin/env CHERE_INVOKING=1 /bin/bash -l

3:通過cygwin的包chere實現

按照參考連結1#Creating a folder context menu entry for mintty

Cygwin's chere package can be used to create folder context menu entries in Explorer, which allow a shell to be opened with the working directory set to the selected folder.
The following command will create an entry called Bash Prompt Here for the current user that will invoke bash running in mintty. See the chere manual (man chere) for all the options.
chere -1 -i -c -t mintty

通過上面的說明,所以需要開啟cygwin安裝工具,安裝chere package;
安裝完成後,在cygwin64\bin目錄下就存在chere工具了
參考提供的例子:./chere -il -t rxvt -s tcsh
修改為如下:./chere -il -t mintty -s bash
第一個是登錄檔增加的;
第二個是chere增加的;

參考資料: