MSYS2でWindowsのターミナル環境構築

少し前までMac使いのWeb開発者だったが、OSを完全にWindowsに入れ替えて開発環境を構築し直し、個人的に満足いくターミナル環境ができたので、紹介&備忘録として残しておく。

(追記) 本文を読む前に

僕はもうこの環境は使っていない。Macで作ったWeb系のプログラム(PHP,Ruby)をサーバーを立てて動かしてみたが、Macでは見たことないエラーが山ほど出てきて1つ1つ処理していくのがとにかく面倒だった。今はWindows Subsystem for Linuxを使って環境を構築中だ。

 

目指す環境の方向性

  • ターミナルはWeb開発に使うだけで、C言語などのコンパイルには使わない。
  • PHP・node.js・ssh・簡単なシェルスクリプトなどが動けば十分。
  • Windows上のソフト(IDEなど)と連携がしやすい。
  • 同じソフトをWindowsとLinux両方にインストールしたりはできるだけしない。

 

(没になった)候補

cmd.exe / PowerShell

Windows標準のコマンドプロンプトとPowerShellだが、サーバーにsshでログインしたりするとき結局bashを使うことになるのでこちらに慣れておきたいってのと、シェルスクリプトが動く環境がいいということで却下。

Windows Subsystem for Linux

Windows標準のLinux仮想環境みたいな感じ?多分PHPなどをWindows(IDE内で使う)とWSL両方にインストールしないといけないので今回はパス。今度試すかも。

Git Bash

Git for Windowsについてくるターミナル環境。MSYS2がベースなのにパッケージマネージャーがついてない。rsyncっていうコマンドを使うためだけにどこからかrsync.exeをダウンロードしてきてパスが通ってるところに置く必要があるので面倒でやめた。

(Git for Windows SDKについてくるものはパッケージマネージャーが普通に使えるらしいが、僕の環境だとインストールすらできなかった。)

 

残った候補

  • Cygwin
  • MinGW
  • MSYS2

の3つが残ったが正直調べても違いがよくわからなかった(恐らく僕の使い方だとどれを選んでも大差ない)ので、MSYS2を選択。

 

MSYS2のインストールと初期設定

公式サイト : MSYS2 homepage

ここからダウンロード&インストール
32bitの人はmsys2-i686-xxxxxxxx.exe
64bitの人はmsys2-x86_64-xxxxxxxx.exe

ホームディレクトリをWindowsと同じ場所にする

デフォルトではMSYS2のホームディレクトリはC:\msys64\home\username\にあるので、これをC:\Users\username\に変更する。
Desktop, Documents, .sshなどを共通して使えるので便利だが、環境がごちゃ混ぜになってしまうので一応非推奨としておく。
Vagrantとかを使ってちゃんとしたLinuxの仮想環境を作るときはしっかり分離した方がいいが、今回はMacに近い感覚でシェルが動かしたいのでこれでいく。

普通のLinuxであればusermodコマンドで変更するが、コマンドが見つからないと言われるので環境変数HOMEを変更する処理を.bash_profileに追加する方法でいく。

ホームディレクトリに.bash_profileを作成

SSHできない問題を修正

どうやら$HOMEを変更してもsshコマンドを使用した際に$HOME/.sshを参照してくれないようなので、元々のホームディレクトリにシンボリックリンクを作成しておく。

 

必要なコマンドをインストール

rsyncなど一部コマンドはMSYS2のパッケージマネージャーであるpacmanというコマンドを使う。

 

PHP, Ruby, Python, Node.jsなどをインストール

各公式サイトからWindows用インストーラを使ってインストールし、.bash_profileでパスを通す。

(pacmanだとなぜかPHPがインストールできなかった)

 

VSCodeやIntelliJ IDEAのターミナルをMSYS2にする

Visual Studio Codeの場合
参考 : Visual Studio Code 15.1の統合シェルをMSYS2のbashにする – Qiita

IntelliJ IDEA・WebStormなどの場合
File -> Settings -> Tools -> Terminal -> Application settings -> Shell path : “C:\Develop\msys64\usr\bin\bash.exe” -c “export CHERE_INVOKING=1; /usr/bin/bash –login -i”

 

まとめ

パスを通すのが面倒だが、そこそこお手軽で使いやすい環境になったと思う。

書いてて思ったけどやっぱりWeb開発系初心者にWindowsはおすすめできない。