在IRB中访问环境变量,但在运行文件时没有

时间:2014-06-15 15:32:09

标签: ruby environment-variables

require 'io/console'
def test
  IO.console.winsize
end

puts "1: test: #{test()}"
puts "2: env: #{ENV['COLUMNS']}"

当我运行时,这就是我在控制台中看到的内容:

 1: test: [23, 80]
 2: env: 

换句话说,我运行程序时无法打印出ENV [' COLUMNS']

但是,在IRB中键入ENV [' COLUMNS']会给我一个等于终端宽度的字符串。

我想知道为什么会这样。

1 个答案:

答案 0 :(得分:3)

只有shell的exported变量才能在Ruby脚本中使用:

$ ruby -e "puts ENV['COLUMNS']"

$ export COLUMNS
$ ruby -e "puts ENV['COLUMNS']"
80
  • this answer here提供了一种可能的解决方法(按照第一个链接并查看Github上的yaml分支)

  • here is an answer提供了一种在不使用shell变量的情况下获取终端大小的方法