[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>

In This Thread