どうやらWindowsはファイル名にUTF-8を使うようになったらしく、最近*1Cygwin周りの挙動が色々変わって困る。ファイル名に関係ない、マウント関連の挙動も変わってる感じなのでまとめる。
/etc/fstab
昔はmountコマンドはレジストリーに設定を保存していたはずなんだけど、最近は保存してくれない。HKEY_LOCAL_MACHINE\SOFTWARE\Cygwin を見ても、エントリーがないし。これは結構不便。
そういう時は /etc/fstab を設定するらしい。
Chapter 3. Using Cygwin
こんな感じか。
D:/home /home ntfs binary,posix=0 0 0
Cygterm
普段リモートログインに使ってるteratermはSJIS、cygwin用teratermはUTF-8にしたい。ので、teraterm.ini にはSJISを指定して、cygterm.cfgには /KR と /KT に UTF-8 を指定する。
TERM = ttermpro.exe %s %d /E /KR=UTF8 /KT=UTF8 /VTICON=CygTerm /nossh
これでcygterm使用時だけUTF-8にしてくれるみたい。
less
lessで入力と出力の文字コードって指定してくれないのかね?JLESSCHARSET=utf-8 だと文字化けするし。探せばありそうなのですが、めんどくさいのでnkfをかませる。
function less(){ set -x less=/usr/bin/less if [ "$#" -gt 0 -a -e "$1" ]; then nkf -w `cygpath -w $1` | $less else $less $@ fi }
とりあえず回避。nkfは標準でついてきてるのかと思ったら、実はwindows用nkfをコピーしていたらしい。ので、cygpath経由。
nkf Win32版の詳細情報 : Vector ソフトを探す! 多分これ・・・?
*1:会社のPCは勝手にアップデートされるので、実は昔からなのかもしれませんが