首页 > 解决方案 > Ruby 相当于 golang 中的 syscall.Exec

问题描述

我想用 ruby​​ 以编程方式设置环境变量。在 Golang 我们有

syscall.Exec(os.Getenv(SHELL), []string{os.Getenv(SHELL)}, updated)

这将打开一个新的默认 shell,其中包含更新的变量。因此,我们执行 go 程序的终端将为会话保留这些变量。

我是 ruby​​ 新手,无法在那里找到等价物。请帮我。

标签: rubygoenvironment-variables

解决方案


要获取/设置环境变量,您可以使用ENVhash,然后进行系统调用,您可以在其中看到标准输出(而不是`将输出作为字符串返回给您),您可以调用system.
默认 shell 应该在 中可用ENV['SHELL'],所以你需要的应该是这样的:

ENV['FOO'] = '123' # FOO will last for the entire ruby session
system({'BAR' => '456'}, ENV['SHELL']) # BAR will last until system call has finished
system(ENV['SHELL']) # Here, only FOO will be available, not BAR

推荐阅读