【问题标题】:Accesing environment variables with $ and ENV in ruby在 ruby​​ 中使用 $ 和 ENV 访问环境变量
【发布时间】:2015-12-10 22:05:47
【问题描述】:

我正在尝试访问在 ~/.bashrc 中设置的环境变量

在 ~/.bashrc 我已经设置了

export testdata = <some path>

当然没有。 我可以补充一下,我也尝试过添加

testdata=<some path>

到 /etc/environment

当我还在壳里时,我可以做到

echo $testdata

结果 在我的脚本中,我可以做到

puts ENV['testdata']

将打印 到目前为止,一切都很好。但是我的另一个脚本不是我写的,其中有一行像

if $testdata then
#some code
end

它应该只在设置环境变量时执行代码。但是,此代码不适用于我。只有当我用 ENV[] 替换 $ 时,代码才会被正确执行。

【问题讨论】:

  • 以 $ 为前缀的变量在 Ruby 中不是环境变量,它们是全局变量。如果需要,请$testdata = ENV['testdata']

标签: ruby environment-variables env


【解决方案1】:

这是预期的行为。 $var 是 Ruby 中的 global variable,而不是环境变量。如您所说,要访问环境变量,您需要使用ENV['var']

【讨论】:

  • 和全局变量必须在同一个脚本中设置,或者它们可能由外部脚本设置?
  • 外部脚本是什么意思?
  • 假设如上所述我的脚本在 test.rb 中。如果我有一个名为 test.rb 的脚本 do_test.rb。 do_test.rb 可以设置全局变量以在 test.rb 中使用吗?
  • 如果你的程序requires 有几个 ruby​​ 文件,那么全局变量可能会设置在这些文件中的任何位置,并且当 ruby​​ 解释器遇到它们时它们将变得可用。
  • 当然。只要确保首先定义变量,然后需要你的 test.rb。
猜你喜欢
  • 2017-10-08
  • 2021-01-30
  • 1970-01-01
  • 1970-01-01
  • 2017-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多