我需要从ruby脚本中设置几个环境属性。
通常,在bash中,我会执行以下操作:
$ export SOME_VAR=some_value
但是在红宝石中,以下(显然)不起作用:
irb(main):002:0> `export SOME_VAR=some_value`
(irb):2: command not found: export ASDF=1
=> ""
有办法吗?
答案 0 :(得分:10)
根据http://ruby.about.com/od/rubyfeatures/a/envvar.htm,你可以写:
ENV['SOME_VAR'] = 'some_value'
答案 1 :(得分:1)
尝试`ENV ['SOME_VAR'] ='some_value'。
在脚本完成后,您无法在执行脚本的环境中产生此持久效果。
我的回答的评论中讨论的一个技巧是从ruby脚本中将有效的shell代码打印到控制台 - 这是不你需要的东西,但它可能是有用的要知道它也可以那样工作。
$ echo "puts 'export foo=bar'" > test.rb
$ echo $foo
$ source <(ruby test.rb)
$ echo $foo
bar
答案 2 :(得分:1)
如果您不想在脚本完成后保留此值,则可以直接更改ENV
。
ENV['SOME_VAR'] = 'some_value'
puts ENV['SOME_VAR']
# => some_value
如果您确实需要持久性,那么您可能(除此之外)必须将此var写入系统中的~/.bashrc
或类似文件。