Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Ruby中的临时环境变量_Ruby On Rails_Ruby_Environment Variables - Fatal编程技术网

Ruby on rails Ruby中的临时环境变量

Ruby on rails Ruby中的临时环境变量,ruby-on-rails,ruby,environment-variables,Ruby On Rails,Ruby,Environment Variables,请尽量容忍我,因为我对这方面还比较陌生,没有太多的编码经验 我正在尝试使用ruby脚本向我的PATH变量添加一个位置。到目前为止,我只有 path = ENV['PATH'].to_s ENV['PATH'] = path + ";" + location print ENV['PATH'] 问题是,文件似乎被添加到路径中并与之一起打印,但当我检查路径变量时,新位置不在那里 另外,当我运行一个单独的脚本时,其中只有一行: print ENV['PATH'] 新位置也不在那里 我的问题是,

请尽量容忍我,因为我对这方面还比较陌生,没有太多的编码经验

我正在尝试使用ruby脚本向我的PATH变量添加一个位置。到目前为止,我只有

path = ENV['PATH'].to_s

ENV['PATH'] = path + ";" + location

print ENV['PATH']
问题是,文件似乎被添加到路径中并与之一起打印,但当我检查路径变量时,新位置不在那里

另外,当我运行一个单独的脚本时,其中只有一行:

print ENV['PATH']
新位置也不在那里


我的问题是,是否有一种方法可以使新路径“保存”,而不是在脚本完成后恢复到旧路径?

如果我没有弄错,您就不能真正编辑环境变量

加载脚本时,ruby加载所有当前已知的环境变量,并将值添加到
ENV

在编辑它时,它将仅为当前执行临时更改

如果您想更改它并希望它保持不变,则必须使用
system

system("export PATH=$PATH:YOUR_PATH")

与您在CLI中所做的相同,您最好生成一个shell命令,在Ruby脚本外部和正在运行的shell内部进行计算

像这样的方法应该会奏效:

放置“导出路径=#{ENV['PATH']};#{location}”
那么,在壳里你做什么

eval$(ruby_脚本)
但是,由于您似乎希望在Windows中运行此操作,您可能希望使用命令替换,在这种情况下,您可以直接输出位置:

放置位置
在Windows外壳中:

设置路径=%PATH%;(ruby_脚本)

冒号“:”是Unix中路径的字段分隔符,而不是分号“;”。今天,当我将分号改为冒号时,您的示例对我来说效果很好。

好吧,我想这是有道理的,windows中是否有类似的函数?
system()
也会临时更改它,事实上,更糟的是,它只会在
system()
shell中更改它。