更新履歴
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\UnixHome
を HOME
として設定した。
もちろん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では最初から揃ってると言われればそれまでですが。
他にコマンドライン環境を快適にするために入れたものがあれば追記します。