[ruby-list:49989] Windowsの"="で始まる環境変数
From:
OOTANI TAKASHI <tksotn@...707.to>
Date:
2014-10-22 12:38:22 UTC
List:
ruby-list #49989
大谷ともうします。 Windowsのおかしな点の一つとして、=で始まる環境変数があります。 ドキュメントには無いようですが、 =C: =D: など ドライブ毎のカレントディレクトリを保持(移動したことのあるドライブのみ) =:: 意味がよくわからない。::\ という値 =ExitCode コマンドプロンプトから直近に起動した外部コマンドの終了コード ところが、環境変数名が=を含むことを想定していないRubyでは、 D:\>ruby -ve "ENV.clear; p ENV.size, ENV['=D:']" ruby 2.1.3p242 (2014-09-19 revision 47630) [i386-mingw32] 0 "D:\\" のように、「クリアしてサイズゼロなのに中身がある」 という不思議な状態になってしまいます。 ちょっと気持ち悪いですが、これをどうするのが一番いいのか。 Hash.cのENV関連の strchr(*env, '=') を、strchr(*(env+1), '=') にすれば、 =で始まる環境変数名も処理できそうですが、それでいいのか。 あるいは、=を含むキーではエラーにするべきか、参照はnilにするべきか。 という問題提起をしてみます。 まあ、たぶん使い道のない環境変数なので、どうでも良いかもしれません。 -- OOTANI TAKASHI <tksotn@mail.707.to>