Windowsで最高のコマンドライン環境を整えるべく、いろいろと調査&試行錯誤。
ようやく納得のいく状態まできた。結局、Cygwin + minttyに落ち着いた。

理想のコマンドライン環境に求める条件

僕がコマンドライン環境に求める条件は以下のとおり。

コマンドプロンプトベースはNG

究極に使いにくいコマンドプロンプトベースではやってられない。
PuttyやTeraTermベースであること。

Gitが問題なく使える

今だとGitは絶対使うし、僕は基本的にGitはコマンドラインで使うので、文字化け等なく普通に使えることが絶対条件。
もちろんコマンドプロンプトベースのGit Bashではなく、PuttyやTeraTermベースで。

美しいフォントで作業したい

気分的に盛り上がらないMSゴシックなどではなく、どうせなら美しいフォントで作業したいので、指定したフォントが問題なく描画できることが必要。

MinGW + mintty ではGitがダメだった

MinGW + mintty は、ここ1年くらいずっと仕事で使っており、Puttyベースでウィンドウを透かした感じにもできてすごくいいのですが、仕事でGitは使ってなかったので、Gitが問題なく使えるか?というのが気になっていました。

MinGW + mintty でGitを試みる

mingw-get では git がなかった。
調べてみると、msysgitをMinGWと同じ場所にインストールするか、git.exeをaliasで指定して動かす、といった手がある模様。

が、そうやってgitコマンドは使えるようになったものの、
パスワード入力などの対話的な処理がうまく動かない(反応が返ってこない)
といった致命的な問題に遭遇。

どうやらコマンドプロンプトベースのプログラムの対話型処理はminttyではうまく実行できないようです。
Cygwin+mintty、Windowsの対話型コンソールアプリを正しく実行できない – <s>gnarl,</s>技術メモ”’<marquee><textarea>¥
(coninというユーティリティプログラムをかますことで実行可能になるようですが、やってみたらcygwinのdllが必要でした)

そこで Cygwin

それではいたしかたなしということで、Cygwinを入れることに。
Cygwinには問題なく動くGitがあるし、メンドウだがcygtermにすればTeraTermベースになるのでいけるかなと。

が、そんなメンドウなことは一切不要でした。
最近のCygwinはバリバリ進化していた!!

  • UTF-8になり文字化け知らず
  • もちろんGitある
  • デフォルトインストールで mintty が入ってる!

これらを知った時点でもう Cygwin + mintty に決まった。。

Cygwin のインストール

基本デフォルトインストールで。
gitは入れる。

あと、後述するがwgetだけは入れておいた方が楽。

minttyで起動

mintty.exe は、

[Cygwinインストール先]/bin/mintty.exe

にあります。

そのまま起動してしまうと、カレントが/usr/binになったり、全然PATHが通ってなかったりといった状態で起動してしまうので、少しごにょります。
まずショートカットをつくり、プロパティで、リンク先に

 -i /Cygwin-Terminal.ico -

を追加します。

また、Cygwinインストール先直下に cygwin.sh を追加しておきます。
cygwin.sh
#!/bin/sh
cd $HOME
export CYGWIN=nodosfilewarning
export LC_ALL=$LANG
export PATH=/usr/local/bin:/usr/bin:/usr/sbin:$PATH

そうすれば、homeディレクトリからPATHが通ったいい感じに起動してくれます。

mintty を設定

あとは、タイトルバーを右クリックして、Optionsから設定を行います。

  • Looks – Transparency をHighにしてウィンドウを透過させる
  • Text – Font で美しいフォントに変更
  • Localeをja_JP、Character setをUTF-8に
    あたりをやるといい感じになります。
    ちなみにこれらの設定は、homeディレクトリの.minttyrcに保存されます。

yumやaptライクにパッケージ管理できる apt-cyg !

しかしまだCygwinへの不満は消えない。
パッケージを追加したりするときにSetup.exeからGUIでやるアレが気に入らないのだ。
yumやaptみたいにコマンドラインでサクッといきたい。

が、これも apt-cyg というものを使えば解決した!
apt-cygでCygwinでもApt/yumっぽくインストールができるようになる。。 – ブックマクロ開発に

apt-cyg の導入

上記の記事のとおりにやればOKですが、Cygwinをデフォルトインストールした場合は wget が入っていないので、wgetだけはCygwinのインストール時に入れるか、setup.exeから追加で入れておく必要があります。
(他に必要なbzip2とgawkはデフォルトインストールで入ってるはず)

パッケージ検索サイトを国内のものに変更

あと、パッケージ検索サイトを国内のものに変更しておくとよいでしょう。

$ apt-cyg -m ftp://ftp.iij.ad.jp/pub/cygwin/ update
Working directory is /setup
Mirror is ftp://ftp.iij.ad.jp/pub/cygwin/

追加したパッケージ

apt-cyg を入れたら、コマンドラインでパッケージ追加できます。
とりあえずは以下を追加しました。

apt-cyg install vim
apt-cyg install unzip
apt-cyg install openssh
apt-cyg install rsync

本家にない標準以外のパッケージがあるCygwin Ports!

まだ不満はある。
Cygwinは標準のパッケージ群が十分とは言えないのだ。

しかし!
PHPやNginxなどのCygwin本家では提供されていないようなもあるリポジトリが ftp://ftp.cygwinports.org/pub/cygwinports にある!

apt-cyg でそこ経由でインストールするには、

$ apt-cyg find php -m ftp://ftp.cygwinports.org/pub/cygwinports

のようにして、-m でミラーサイトを指定してやる。

これをやると検索するミラーサイトが更新されてしまうようなので、元に戻すには前述の

$ apt-cyg -m ftp://ftp.iij.ad.jp/pub/cygwin/ update

をやれば戻る。
基本的には標準リポジトリ使い、ときどき一時的にcygwinports使うという感じなので、ミラーサイトは更新して欲しくないんだが、いい方法がないものか。

まとめ

このような感じになりました。

Cygwin、mintty、apt-cyg で、Windowsでも概ね満足のいくコマンドライン環境ができあがりました。
苦労せずに済むmacのよさを再認識。。。