【问题标题】:Access environment variable in IRB but not when running file在 IRB 中访问环境变量,但在运行文件时不访问
【发布时间】:2014-06-15 15:32:09
【问题描述】:
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'] 会给我一个等于终端宽度的字符串。

我想知道为什么会这样。

【问题讨论】:

    标签: ruby environment-variables


    【解决方案1】:

    只有在您的 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 变量的情况下获取终端大小的方法

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-20
      • 2010-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多