Ruby中的临时环境变量

时间:2014-03-17 16:10:43

标签: ruby-on-rails ruby environment-variables

尽量忍受我,因为我对此很陌生并且没有太多的编码经验。

我试图使用ruby脚本向PATH变量添加位置。到目前为止我只是

path = ENV['PATH'].to_s

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

print ENV['PATH']

问题是该文件似乎被添加到PATH并随之打印,但当我去检查我的路径变量时,新位置不存在。

另外,当我运行一个单独的脚本是一行时:

print ENV['PATH']

新地点也不存在。

我的问题是有没有办法让新的PATH“保存”而不是在脚本完成后恢复到旧的PATH?

3 个答案:

答案 0 :(得分:0)

如果我没弄错,你无法真正编辑环境变量。

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

编辑时,只会暂时更改当前执行。

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

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

与在CLI中执行的操作相同

答案 1 :(得分:0)

您能做的最好的事情是生成一个shell命令,以在Ruby脚本之外以及正在运行的shell内进行评估。

类似的事情应该起作用:

puts "export PATH=#{ENV['PATH']};#{location}"

然后,在外壳中执行

eval $(ruby_script)

但是,由于您似乎想在Windows中运行此命令,因此您可能希望使用命令替换,在这种情况下,您可以直接输出位置:

puts location

在Windows shell中:

set PATH=%PATH%;(ruby_script)

答案 2 :(得分:0)

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