齊藤
maldi****@gmail*****
2008年 3月 14日 (金) 19:55:30 JST
> (sys-normarize-pathname "~/abc" :expand #t) > > が$HOMEと値が異なっているようです。 > > ~/abc -> C:\Document and Settings\○○○ > $HOME -> C:\unixtools\home > > となっています。上はどうもレジストリで設定しているようなのですが、Cygwin > の場合のsys-normalize-pathnameは ~ のどの値を見ているのでしょうか? sys-normarize-pathnameでgrepして見つからずに困ってしまいました。 sys-normalize-pathnameのtypoですね。 ソースコードを順に追って行くと実際にこの処理をしているコードは src/system.cの中にあるput_user_home関数です。 geteuid関数でユーザーのIDを取得してそれをgetpwuid関数に渡し、 (ホームディレクトリ等の)ユーザー情報を得ています。 geteuidもgetpwuidも本来はWindowsにないものですから、 cygwinランタイムがそれっぽい結果を返しているわけです。 では、具体的にcygwinはどのような処理をしているのかということになると、 ざっと調べてみたところでは、 cygwinをインストールしたディレクトリの下の/etc/passwdファイルを見ている ようです。 そのファイルの中であなたのIDを探してみてください。 その右のほうに C:\Document and Settings\○○○ とありませんか? ---- 齊藤敦志