作業メモ:msys2インストール、エクスプローラーから起動
動機:git (for Windows)を使うときに、cmdからはいいかげん操作し辛いと感じた。Git bash でOK、と気づいたときにはすでにmsys2を入れていたので、将来的に色々使うことを考えて自然に使えるようになるまでセットアップ。
基本は以下を参考に、64bit版をインストール、起動、パッケージシステムpacmanのupdateなどを行った。
ただし2017年3月現在上記の記述と変わっているところも少しある
mingw64_shell.bat, mingw32_shell.batは廃止
minGWへのPATHが通った状態でmsys2を起動する用の個別のバッチファイル廃止、代わりにmsys2_shell.cmdにオプション-mingw32または-mingw64を使うことになった。
これらのbat, cmdの起動ファイルはパッケージfilesystemで提供されている(いた)。
> msys2_shell.cmd -mingw32 > msys2_shell.cmd -mingw64
エクスプローラーのアドレスバーからmsys2を起動
普段はエクスプローラーでファイルを見ながら必要なときにアドレスバーからcmdを起動して使う。cdが面倒くさいのかもしれない…
そんなノリでmsys2を素早く起動したい。
要件を以下の3つとして、実現する方法を見つけた。
- エクスプローラーのアドレスバーに"msys2"と入力→Enterでmsys2が起動する
- エクスプローラーのカレントディレクトリを引き継いで起動
- WindowsのPATHを引き継ぐ
- Git for Windowsとかをそのまま使うため
やり方
1. msys2のインストールフォルダにPATHを通す
2.インストールフォルダのmsys2.iniを開くと以下のようになっているので
#MSYS=winsymlinks:nativestrict #MSYS=error_start:mingw64/bin/qtcreator.exe|-debug|<process-id> #CHERE_INVOKING=1 #MSYS2_PATH_TYPE=inherit MSYSTEM=MSYS
CHERE_INVOKING=1, MSYS2_PATH_TYPE=inheritの行のコメントアウトを外す
#MSYS=winsymlinks:nativestrict #MSYS=error_start:mingw64/bin/qtcreator.exe|-debug|<process-id> CHERE_INVOKING=1 MSYS2_PATH_TYPE=inherit MSYSTEM=MSYS
3.エクスプローラーでアドレスバーに"msys2"と入力すると、要件通りの動作でmsys2が起動する
説明
msys2のランチャーはmsys2_shell.cmd以外にも複数の形式で提供されている。
Launchers · msys2/msys2 Wiki · GitHub
右クリックから開くためのレジストリ設定等もある。
この中で、msys2-launcherパッケージで提供されているexe形式を使用する。
ちなみに特にpacmanで改めてインストールしなくてもmsys2インストール完了時点で既に入っていた。
このmsys2-launcherパッケージのランチャーexeは起動するときに設定として.iniファイルを読み込む。
msys2.exeが読み込むmsys2.ini内のオプションの中で、カレントディレクトリを引き継ぐCHERE_INVOKING=1、PATHを引き継ぐMSYS2_PATH_TYPE=inheritを有効にすると、msys2が要件を満たすように起動する。
エクスプローラーのアドレスバーへの入力については、正確な仕様は知らないが概ねcmd上でのコマンド実行と同様なので、msys2.exe(インストールディレクトリ)へのPATHを通せばmsys2(.exe)の入力だけで起動できる。
今回はデフォルトのmsys2.exeを使用したが、minGWへのPATHを通すランチャーのmingw32.exe, mingw64.exeも同様。
iniファイルもそれぞれ分かれていてmingw32.ini, mingw64.iniとなっているので注意。
その他
最終的には簡単なことだったけど、msys2_shell.cmdだけしかランチャーを知らない時はショートカットを作ってPATH通して起動しようとしてたり(なんでそんな遠回りをしたのか…)
でもmsys2_shell.cmdをrenameするのはパッケージのupdateとかで整合性がとれなくなるのイヤなのでこれが一番簡単かも…?