2017-08-30 46 views
-1

一个env。变量不是零,但在红宝石它是零:一个env。变量不是零,但在红宝石中它是零:

my_comp% irb 
irb(main):001:0> ENV["my_var123"] 
=> nil 

my_comp% echo $my_var123 
some_value:fdsfdsfdsfds 

为什么?

+3

它是'export'吗? 'export my_var123; irb' – Ryan

+0

@Ryan如果不是,它将如何通过'echo $ my_var123'显示? – Jily

+0

@Jily它是一个shell变量,但不是一个环境变量。 – Stefan

回答

1

echo $my_var123检查无关与当前环境:

$ foo=bar 
$ echo $foo 
#⇒ bar 
$ env|grep foo 
$ 

而且ENV红宝石派生当前shell环境。要更新环境,一个使用export

$ export foo=bar 
$ echo $foo 
#⇒ bar 
$ env|grep foo 
#⇒ foo=bar 
+0

但在/ etc /环境中,所有变量都没有导出,它们都是可见的。 – Jily

+0

那又如何?在登录时,在激活PAM堆栈期间,'pam_env.so'读取'/ etc/environment'并且更新environment_。 – mudasobwa

+0

那么为什么在/ etc/environment中调用“export”? – Jily