gpt4 book ai didi

ruby - 如何在 ruby​​ 代码中执行 setenv 命令

转载 作者:行者123 更新时间:2023-12-05 04:57:06 25 4
gpt4 key购买 nike

我试图通过下面提到的 3 种方法在 ruby​​ 代码中设置一个环境变量。像这样:

one = `setenv HEMANT2 \"hi\"`

two = %x[ export HEMANT2=hi1]

there = system("setenv HEMANT \"hi\"")

这 3 个似乎都不起作用。我正在研究 tcsh。想知道我错过了什么吗?

最佳答案

环境变量属于一个进程并被传递给他们的 child 。上面的所有行都创建了一个子 shell 进程。环境变量在子 shell 进程中更改,而不是在其父 Ruby 进程中更改。

相反,使用 ENV class .

ENV['HEMANT2'] = 'hi'

这将在您的 Ruby 进程中设置 HEMANT2 环境变量。但它不会更改您的 shell 中的环境变量。

$ cat ~/tmp/test.rb
ENV['HEMANT2'] = 'hi'
$ ruby ~/tmp/test.rb
$ echo $HEMANT2

$

同样,因为环境变量属于一个进程,并由其子进程继承。 ruby ~/tmp/test.rb fork 一个你的 shell 的子进程。它不能设置其父级的环境变量。


您可以使用 shell 脚本来完成,但前提是您source 不会创建子进程,它会在您的 shell 中运行命令。

$ cat test.sh
#!/bin/sh

HEMANT2=hi

$ sh test.sh
$ echo $HEMANT2

$ source test.sh
$ echo $HEMANT2
hi

适用于为您的 shell 编写的 shell 脚本。

关于ruby - 如何在 ruby​​ 代码中执行 setenv 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64641827/

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