ruby - Ruby 相当于 golang 中的 syscall.Exec
问题描述
我想用 ruby 以编程方式设置环境变量。在 Golang 我们有
syscall.Exec(os.Getenv(SHELL), []string{os.Getenv(SHELL)}, updated)
这将打开一个新的默认 shell,其中包含更新的变量。因此,我们执行 go 程序的终端将为会话保留这些变量。
我是 ruby 新手,无法在那里找到等价物。请帮我。
解决方案
要获取/设置环境变量,您可以使用ENV
hash,然后进行系统调用,您可以在其中看到标准输出(而不是`将输出作为字符串返回给您),您可以调用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
推荐阅读
- windows - Powershell Remote PSSession Failing - Domain Administrator Account
- ruby-on-rails - Using the paper_trail gem when a model has a UUID as primary key
- elasticsearch - Generate TLS certs for Elasticcluster with ansible
- node.js - 使用 wget 访问本地服务器时出现读取错误
- sql - 如何从 Hive 中具有相同列的两个表中获取行中的差异
- java - 使用 jaxb 覆盖 xsd toString() 方法
- asp.net - UserControl 属性:枚举的集合
- tortoisesvn - AttributeError: 'int' 对象没有属性 '_saved_in_db' Fastapi Tortoise(orm)
- javascript - 整数的阶乘
- javascript - Visual Studio Code“debug.javascript.usePreview”未知配置设置