RubyInstaller付属のMinttyを右クリックメニューで開く
RubyInstallerでRuby 2.6.5+DevKitをインストールしたらMSYS2が入った。
この機会にWindowsでのBash環境をGit for Windowsから変えてみた。
C:\Ruby26-x64\msys64にPATHを通す。
C:\Ruby26-x64\msys64\msys2.iniで次の行のコメントを外す。
CHERE_INVOKING=1
これでエクスプローラで開いているフォルダのアドレスバーにmsys2と入れれば、そのフォルダでBashが起動するようになった。
が、フォルダの何もないところの右クリックメニューからBashを開こうとしてはまった。
レジストリエディタでキーを作成。
HKEY_CLASSES_ROOT\Directory\Background\shell\bash
値にBashを設定
フォルダの右クリックメニューにBashが追加されて、ここまでは問題なし。
さらに実行するコマンド用のキーを作成。
HKEY_CLASSES_ROOT\Directory\Background\shell\Bash\command
値にC:\Ruby26-x64\msys64\msys2.exeを指定 -> 失敗。
いざフォルダで右クリックメニューからBashを選ぶと次のエラーが表示されてBashが開かない。
Error: Windows cannot access the specified device, path, or file. You may not have the appropriate permission to access the item
参考記事にあったMinttyのコマンドラインを指定して、Bashが起動するようになった。
"C:\Ruby26-x64\msys64\usr\bin\mintty.exe" /bin/bash -l -c "{ cd ""%V""; exec /bin/bash;}"
上記の方法だと$HOMEをデフォルトと違う場所しているとき~/.bash_profileが読まれなかった。
msys2_shell.cmd経由で
C:\Ruby26-x64\msys64\msys2_shell.cmd -use-full-path -where "%V"
にしたら解消した。
NFD(Mac由来の濁点が分かれる「が」や「パ」)が入ったフォルダでも大丈夫になった。
「-use-full-path」はWindowsのPATHを強制的に引き継ぐため。
参考記事
msysでインストールしたmintty.exeを、ディレクトリ右クリックメニューから起動する - へぬもへメモ