[ruby-list:49990] Re: Windowsの"="で始まる環境変数
From:
"U.Nakamura" <usa@...>
Date:
2014-10-22 12:48:37 UTC
List:
ruby-list #49990
こんにちは、なかむら(う)です。
In message "[ruby-list:49989] Windowsの"="で始まる環境変数"
on Oct.22,2014 21:38:22, <tksotn@mail.707.to> wrote:
> ところが、環境変数名が=を含むことを想定していないRubyでは、
>
> D:\>ruby -ve "ENV.clear; p ENV.size, ENV['=D:']"
> ruby 2.1.3p242 (2014-09-19 revision 47630) [i386-mingw32]
> 0
> "D:\\"
>
> のように、「クリアしてサイズゼロなのに中身がある」
> という不思議な状態になってしまいます。
> ちょっと気持ち悪いですが、これをどうするのが一番いいのか。
環境変数名が = を含むことを想定していないわけではなくて、意図
的に = で始まる環境変数を隠蔽しています。
この隠蔽処理、および、明示アクセスすれば値が取れる、という挙
動は、cmd.exe のそれに合わせたものです。
(この辺は win32/win32.c の rb_w32_get_environ() 冒頭にコメン
トで軽く説明されていますので、興味があればご覧ください。)
それでは。
--
U.Nakamura <usa@garbagecollect.jp>