Cygwin 1.7 をインストールしたら home が変な場所になった話
Cygwin 1.7 をインストールして、Cygwin Bash Shell を起動したら次のようなエラーが表示されて困ってしまった。
mkdir: cannot create directory `/home': Not a directory /home/my_account could not be created. Setting HOME to /tmp.
管理者アカウントで Cygwin Bash Shell を起動したら上記のエラーは出なくなったが、/home
が C:\cygwin\home
ではなくどこか別の場所にリダイレクトされていた。
リダイレクトの正体は fstab
少し調べてみると、Cygwin 1.7 からは /etc/fstab
にマウント情報が記載されるようになったらしい。
Mount points are no longer stored in the registry. Use /etc/fstab and /etc/fstab.d/$USER instead.
What's new and what changed in Cygwin 1.71.7 からはマウント ポイントがレジストリに記録されなくなりました。その代わりに、
/etc/fstab
と/etc/fstab.d/$USER
を利用します。
実際、C:\cygwin\etc\fstab
を見てみると次のような記載があった。
C:/Users/foo/AppData/Roaming/Microsoft /home some_fs binary 0 0
setup.exe と過去インストールした別ユーザーの存在
なぜか別のユーザー foo さんの AppData
の下にリダイレクトされているようだ。
どうやら、1.5 の設定を引き継ぐために setup.exe がレジストリから読み取っているようだ。
When you upgrade an existing older Cygwin installation to Cygwin 1.7, your old system mount points (stored in the HKEY_LOCAL_MACHINE branch of your registry) are read by a script and the /etc/fstab file is generated from these entries.
Chapter 3. Using Cygwin過去のバージョン から 1.7 にアップグレードすると、過去のマウントポイントの情報(レジストリの
HKEY_LOCAL_MACHINE
に記録されています)がスクリプトによって読み出され、これらの情報を元に/etc/fstab
ファイルが生成されます。
なるほど!と思ってレジストリを見てみると、HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin\mounts v2\/home
キーの native
に問題の設定があった。どうやら、foo さんが以前、この端末で過去の Cygwin をインストールしたときの設定が残っていたようだ。
そして...
改めてレジストリを削除したあとで新規インストールしたらうまく行った。新規インストールと同等になったので、/etc/fstab
はコメントだけになっていた。とほほ。