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']会给我一个等于终端宽度的字符串。
我想知道为什么会这样。
答案 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变量的情况下获取终端大小的方法