2017-08-30 7 views
-1

env。変数はゼロではありませんが、ルビではゼロです。env。変数はゼロではありませんが、ルビではゼロです。

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

my_comp% echo $my_var123 
some_value:fdsfdsfdsfds 

なぜですか?ルビーで

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

そしてENV現在のシェル環境派生:

+3

「エクスポート」ですか? 'export my_var123; irb' – Ryan

+0

@Ryanもしそうでなければ、 'echo $ my_var123'でどのように見えるでしょうか? – Jily

+0

@Jilyシェル変数ですが、環境変数はありません。 – Stefan

答えて

1

echo $my_var123チェックは、現在の環境とは何の関係もありません。環境を更新するには、exportを使用します。

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

しかし、/ etc /環境では、すべての変数はエクスポートされず、すべて表示されます。 – Jily

+0

だから何ですか?ログイン時に、PAMスタックが起動されている間、 'pam_env.so'は'/etc/environment'を読み込み、_は環境_を更新します。 – mudasobwa

+0

なぜ/ etc/environmentで "export"を呼び出すのですか? – Jily

関連する問題