Cygwinのいくらかましな使い方
はっきり言ってCygwinは気持ち悪い。できれば使いたくないと10年以上前に初めてCygwinを使ったときに思った。Cygwinの開発に関わって、僕のパッチがいくつも取り込まれたCygwinを使っている今でも、その気持ちに変わりはない。本質的には変わってないからね。
Cygwinが気持ち悪い理由の一つはファイルシステムだと思う。ホームディレクトリの/homeがC:/cygwin/homeなのはよくない。ホームディレクトリのファイルの名前が普通のWindowsアプリケーションに渡ったときに、/homeはC:/homeとして扱われるので見えなくなってしまう。
少なくともホームディレクトリはWindowsとCygwinでパス名が一致するようにしておくべきだ。そうすればWindowsとCygwinのアプリケーションを混在させたときに混乱せずにすむ。
たとえばC:/home/fujiedaをホームディレクトリにして、/etc/fstabに以下の一行を挿入すれば、Cygwinの/home/fujiedaがC:/home/fujiedaになる。
C:/home /home ntfs binary 0 0
/home/ユーザ名以外のホームディレクトリを選んだときには、/etc/passwdの自分のアカウントのホームディレクトリを修正するのを忘れないように。また、環境変数HOMEを参照するUnixライクなWindowsアプリケーションのために、HOMEにホームディレクトリを設定しておくとよい。
ちなみに僕はC:/DropboxにDropboxのフォルダを作成してC:/Dropbox/homeをホームディレクトリにしている。この場合は/etc/fstabに以下の一行を入れればよい。
C:/Dropbox /Dropbox ntfs binary 0 0
マウントテーブルや/etc/passwdの内容は共有メモリにキャッシュされているので、すべてのCygwinのアプリケーションを終了しないと変更した内容が反映されないことに注意してほしい。
Cygwinのファイルシステムで気持ち悪いのは、lsで見えるファイルのパーミッションもそうだ。僕はもう慣れてしまったので平気だが、WindowsのACLに基づいて作られたパーミッションが気持ち悪い人はいると思う。これが嫌な人はWindowsのACLをCygwinから見えないようにしてしまえばよい。具体的には以下のように/etc/fstabでnoaclオプションを指定すればよい。
C:/home /home ntfs binary,noacl,notexec 0 0
ACLが使えない場合、Cygwinがファイルの先頭2バイトが#!かどうかで実行ファイルかどうかを調べるようになるので、それを避けるためにnotexecオプションも指定しておいたほうがよい。
あとはC:/cygwinの外のディレクトリを参照するために、/cygdrive/c/とか付けるのはやってられないので、/etc/fstabに以下の一行を指定して/c/で参照できるようにするとよい。
none / cygdrive binary 0 0