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

标签 ruby environment-variables

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

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

我该如何解决这个问题?

最佳答案

这样做:

$ source whatever.sh
$ set > variables.txt

然后在 Ruby 中:

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

运行此程序后,您的环境应该可以正常运行了。

关于ruby - 如何在 Ruby 脚本中为命令 shell 获取环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2139080/

相关文章:

ruby - Class 怎么可能属于 Class 类而没有 Class 实例方法呢?

python - 在 Python 中将路径附加到 LD_LIBRARY_PATH

jenkins - 在 Jenkins 管道中,一些环境变量具有空值

Kubernetes - 将负载均衡的公共(public) IP 作为环境变量传递到 Pod

Swift:使用 self.moc.save() 保存核心数据时出现 Nil 错误

bash - 在 Bash 中,为什么我们可以通过 PS1 ='something' 设置一些环境变量,而其他需要 export SOME_VAR ='something' ?

ruby - GIF下载脚本中的错误处理

ruby - 简单除法的结果随负红利变化

ruby - 在不将数组转换为字符串的情况下摆脱数组中的双引号

ruby-on-rails - Ruby on rails 显示评级系统的星图