如何在Ruby脚本中为命令shell获取环境变量?

rob*_*sco 6 ruby environment-variables

我正在尝试从我的ruby程序中运行一些第三方bash脚本.

在我运行它们之前,它们需要我来源文件.在命令行上它一切正常但在Ruby中它不起作用.我发现系统命令将打开一个新的子shell进程,任何源代码都将在那里完成,并且无法从运行Ruby脚本的父shell进程中看到.当系统调用结束时,子shell也被杀死.

我如何解决这个问题?

Geo*_*Geo 8

做这个:

$ source whatever.sh
$ set > variables.txt
Run Code Online (Sandbox Code Playgroud)

然后在Ruby中:

File.readlines("variables.txt").each do |line|
  values = line.split("=")
  ENV[values[0]] = values[1]
end
Run Code Online (Sandbox Code Playgroud)

在你运行之后,你的环境应该很好.