请看下面的例子,在你的终端试下看,想了一个晚上都没有想通理由。
ruby -e "puts ENV['USERNAME']"
结果是没有输出 因为我的环境变量里面没有设置 USERNAME,所以返回空是正常的。
USERNAME=a ruby -e "puts ENV['USERNAME']"
#=> 登陆用户名
结果输出了我的用户名,而不是这里设置的环境变量a
,很是诡异,因为没有哪个地方设置这个值。
USER=a ruby -e "puts ENV['USER']"
#=> a
换一个变量用 USER 反而正常了。 我的环境变量里面 USER 自动被设置为登录名。 说明虽然环境变量有值,但是命令行中设置的值可以重置它。
在系统自带 /usr/bin/ruby, 与 rbenv 都试过,问题同样! 用 mac,linux 都试了,没有不同! 在 ruby1.8, 1.9, 2.0 都试了没有变化!
这是 ruby 的 bug 吗,哪位能解释一下?