Edited at

MSYS2でWindows上にコマンドライン環境を作る

More than 3 years have passed since last update.


更新履歴

2015.03.29 MSYS2を使った環境に変更


目的

ターミナル使ったUnixっぽい環境で作業したいならMacかLinux使ってろよとは言われますが、

Windowsでしかできない開発をしながらでも、ちょっとしたことにUnixのツールが使いたい。

個人的にはがっつりしたコマンドライン環境やLinuxに近い使い方をするならVagrantで作業するのが最近はいいんじゃないかと思います。

ただWindows上でもGUIではなくCUIで操作したいものがあると思うので環境を整えます。


環境


  • Surface Pro 2

  • 自作PC

どちらもWindows 8.1マシン


環境作成


HOMEの設定

C:\Users\username の直下にドットファイルを置かれてほしくないので、HOME を設定する。

HOME を設定しておけば、今回のようにMinGWやCygwinからMSYS2にした場合でもシェルを起動した際のホームディレクトリは利用しているコマンドライン環境に依存しないものになる。

自分は Rapid Environment Editor を使って、C:\Users\username\UnixHomeHOME として設定した。

もちろんPATHを設定した後は面倒くさいけど再サインイン必須。

タスクマネージャからエクスプローラのプロセスを再起動すればOK。


chocolateyのインストール

少し前は微妙とか自分でも言ってたけど、Microsoftが直々に開発しているOneGetでもChocolateyのリポジトリを使うらしいのと、Chocolateyで入らない物やインストール先が気に入らないものは手動で入れると割り切って使えば結構便利。


Chocolateyで入れたものたち


  • cmder


    • choco install cmdermini.portable



MinGWを使わないようにしたこと、Git for WindowsではなくMSYS2でGitを入れるため、CUI環境としてはCmderのみとりあえず入れる。

CUI以外のアプリケーションでChocolateyを使って入れているものはあるので使ってないわけではないですよ。


MSYS2

MSYS2はMSYSと異なり64bit OS対応や内部ではMinGWが入っていますがmingw-getコマンドではなくArch Linuxで採用しているpacmanコマンドを利用したり、Gitがあったりパッケージが増えててバンザイ!な環境になっています。


インストール

MSYS2 installer から自分のOSに合ったものをダウンロード。

あとはインストーラーの指示に従い、サイトにもあるようにpacmanの更新まで行う。

pacman --needed -Sy bash pacman pacman-mirrors msys2-runtime

# msys2_shell.batで立ち上げ直したあとに以下のコマンド
pacman -Su


補足

MSYS2のインストール先には以下の3つのbatファイルが存在している。

- msys2_shell.bat

- mingw32_shell.bat

- mingw64_shell.bat

とりあえずmsys2_shell.batを立ち上げて以下のコマンドを叩いてみる。

pacman -Sl | grep git

先頭に msys/mingw32/mingw64 と書いてあるのはパッケージのカテゴライズである。

mingw32_shell.batで起動するとmingw32とmsysのカテゴリのパッケージは使えるが、mingw64は使えない。

その逆も然りである。

またmsys2_shell.batで起動するとmingw32/mingw64にカテゴライズされているパッケージはPATHが通っていないためインストールしてもそのままでは使えない。


PATHの設定

ターミナルエミュレータはcmderを使うが、mingw32/mingw64として入れたパッケージが使えないから毎度batファイルを変えるというのも面倒なのでPATHを設定する。

ここではOS依存ではなく、MSYS2という環境に依存するPATHとしたいので.bash_profileで設定しておく。

echo 'export PATH=/mingw64/bin:$PATH' > $HOME/.bash_profile

今回はこうしているが、例えばMSYS2で入れたGitをVisual Studioでも見えてほしい、とかの場合にはWindowsのシステムからユーザのPATHを指定したほうが良いかも?

その場合はちゃんとC:\で始まる絶対パスを指定するように。


インストールしたもの


  • git


    • pacman -S git



  • openssh


    • pacman -S openssh




cmder

変わったことは特にやっていないので最低限やったことを。


  • フォントの変更

  • monospaceの解除

  • MSYS2のbashをtaskに登録し、デフォルト起動にする。Task定義のCommandsには以下を。


    • "C:\msys64\usr\bin\bash.exe" --login -i

    • スタートアップディレクトリを指定する場合は、別途指定すること




まとめ

Windowsでコマンドライン環境作るのが面倒くさいとか言われるけど、MinGWとターミナルエミュレータをChocolatey経由で入れれば大体そろうのでいい感じ。

ざっと触った感じではMinGWでのCUI環境よりMSYS2の環境のほうが使い勝手がいいので、しばらくはこれでいけるんじゃないかって感じです。

もちろんMacやLinuxでは最初から揃ってると言われればそれまでですが。

他にコマンドライン環境を快適にするために入れたものがあれば追記します。


参考