Microsoftがcoreutilsを出したみたいな話と、個人的に最近色々発展があり見直したのでまとめておく。WSL2については死ぬほど情報があるのでMSYS2中心
主要な方法
WSL2とMSYS2この2つが圧倒的におすすめ。自分も両方入れて使い分けている
他にGit Bashが人気だが、追加でパッケージを入れられないのでちょっとツールが足りないというときに非常に困るのでMSYS2がおすすめ。またCygwinも存在しているはずだが最近使ったことがないのでわからん
用途
WSL2は言わずもがな、Linuxの軽量VMをつくるのでほぼすべての用途に向いている。向いていないのは2つだけ
- Windows側のファイルを高速にread/writeしたいとき: 典型的な例としてWindows側のFSにあるGitレポジトリを使うときなどがこれに当たる。信じられないほど遅くなるため、Git for Windowsの代替などとしては使えない
- USBやCOMポートなどを利用したいとき: Androidアプリ開発や組み込みのマイコン開発などがこれにあたる。一応usbipdなど手段もありますが動作の不安定さや制約が多く、WSL2をあきらめてWindows側で開発を行う人が多い
向いていない用途ではWindowsをベースにMSYS2で便利シェルとcliツールを補完できる
MSYS2とは
UNIXっぽいアプリやライブラリを薄い互換ライブラリとともにgccやclangでwindowsネイティブにビルドするためのツールキット。ビルドに必要なmakeやらbashやらを動かすために互換レイヤとパッケージマネージャ (pacman) をつけたらビルド以外でも便利になり色々使われるようになった
導入
公式ドキュメントを見てインストール www.msys2.org
Windows Terminalで起動できるようにする
ご存知とは思いますがWindows Terminalがあまりにも良いので、旧コマンドプロンプトやMSYS2についてくるMinttyは使うべきではない
Windows TerminalのSettingsで左下の "Open JSON file" を押して設定ファイルを開きます。profilesの中にCommand PromptやPowerShellやWSLなどがあると思うので下記も追加。Windows TerminalのメニューではこのJSONの要素の順番に並ぶので必要に応じて上の方にしておくと使いやすい。
{ "antialiasingMode": "cleartype", "commandline": "C:/msys64/msys2_shell.cmd -defterm -here -no-start -msys", "font": { "face": "Cascadia Mono" }, "guid": "{71160544-14d8-4194-af25-d05feeac7233}", "icon": "C:/msys64/msys2.ico", "name": "MSYS / MSYS2", "startingDirectory": "C:/msys64/home/%USERNAME%" },
後述するがbash以外を使いたい場合はcommandlineで C:/msys64/msys2_shell.cmd -defterm -here -no-start -msys -shell zsh のように設定できる。事前にそのシェルをインストールしておく必要がある
Symlinkを使えるようにする
MSYS2はデフォルトではsymlinkを作成できず、 ln -sなどがただのコピー作成になってしまうという歴史的仕様がある。最近はwindowsでもオプションだけでsymlinkを作れるようになったのでそれを使う
まずWindowsの設定から"システム" → "環境設定" で開発者モードをオンにする必要がある

次にmsysの起動cmd (C:\msys64\msys2_shell.cmd) でコメントアウトを解除する。ちなみに rem はCMDでの行コメントになる。他言語での // xxxx みたいなもん
rem set MSYS=winsymlinks:nativestrict ↓ set MSYS=winsymlinks:nativestrict
これで適当なファイルを ln -s して ls -al してsymlinkっぽく矢印が出ていたら成功
Gitをいれる
git というパッケージ名で入る方は遅いことで有名。今までは別途Git for Windowsをインストールしてそのgit.exeを呼ぶのがベストだったが、2026年2月にMSYS2で公式にGit for Windows(かそれに近しいパフォーマンス)のgitがパッケージ化された。
(わからない人は読み飛ばして良い)MSYS2ではなく各ビルド環境(ming64, ucrt64など)でしかパッケージがないため、それらでインストールしてパスを通す必要がある。MSYS2的お行儀としては悪いので気に食わない人は別の方法をとるか、単にUCRT64などをデフォルト環境にしてほしいが、単にsymlinkで ln -s /mingw64/bin/git.exe /usr/bin/git.exe などとするのは他の依存dll (zlib1.dllなど) が読み込めなくてエラーとなるため動かない
pacman -Sy mingw-w64-x86_64-git echo 'export PATH=$PATH:/mingw64/bin' >> ~/.bashrc
これでターミナルを開き直すとgitが使えるはず
お気に入りのパッケージをいれる
お好みで
pacman -Sy zsh vim ruby python openssh rsync
WindowsのPATHを引き継ぐ
msys2_shell.cmdを呼ぶときに -full-path オプションをつけるかmsys2_shell.cmdの中の下記をコメントアウトする。意図せずWindows側のアプリケーションを呼び出してしまう副作用も多いのでこれを使うか、個別でPATHに追加するかは個々人で判断するべき。自分は使っていない
rem set MSYS2_PATH_TYPE=inherit




