foo.sh $ irb > `source $(pwd)/f-6ren">
gpt4 book ai didi

ruby - 如何将环境变量从 shell 脚本导入到当前的 Ruby 环境中?

转载 作者:数据小太阳 更新时间:2023-10-29 08:38:08 25 4
gpt4 key购买 nike

我有一系列 bash 文件,我想将它们导入到当前的 Ruby 环境中。这是一个例子:

$ echo "export FOO=bar" > foo.sh
$ irb
> `source $(pwd)/foo.sh`
> puts ENV['FOO']
=> nil

有没有一种方法可以将 foo.sh 源代码到父环境中,而无需手动解析它?

最佳答案

Ruby 中的所有 shell 调用都在子进程中运行,无论您使用 system() 或反引号或 Process 或任何其他机制来执行它们。像这样的子进程不可能影响当前的 Ruby 进程。

如果你想在执行一些 Ruby 代码之前获取 shell 脚本,你可以创建一个包装器:

#!/bin/sh

source foo.sh
ruby some_ruby_file.rb

如果您真的想要,您可以尝试从 shell 脚本中解析出变量导出,然后直接设置 Ruby 的 ENV 散列,但这几乎肯定是个坏主意。它很难编写、容易出错且无法维护。

要么使用上面的包装器,要么想出一种不同的方式来保存您的环境配置,例如 YAML 文件或其他一些传统的配置解决方案。

关于ruby - 如何将环境变量从 shell 脚本导入到当前的 Ruby 环境中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22047555/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com