Cygwin & UTF-8 windows filename etc

どうやら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

普段リモートログインに使ってるteratermSJIScygwinteratermUTF-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は標準でついてきてるのかと思ったら、実はwindowsnkfをコピーしていたらしい。ので、cygpath経由。

nkf Win32版の詳細情報 : Vector ソフトを探す! 多分これ・・・?

*1:会社のPCは勝手にアップデートされるので、実は昔からなのかもしれませんが