我在Ruby中有一个脚本,里面必须运行bash
命令。此命令是export http_proxy = ""
和export https_proxy = ""
。
问题是我在没有运行错误的情况下运行以下操作,但似乎没有做任何更改:
system "export http_proxy=''"
system "export https_proxy=''"
我使用这些行创建了file.sh
,如果我在终端中运行它,则只有在运行时才有效:source file.sh
或. file.sh
。
请问您如何在Ruby脚本中运行此命令?它可以直接使用命令行或在脚本中执行.sh
文件。
答案 0 :(得分:1)
使用system
运行单独的流程时,对该流程的环境所做的任何更改都只会影响该流程,并且会在流程退出时消失。
这正是为什么运行file.sh
不会更改当前shell,因为它将其作为子shell运行,并且当进程退出时更改消失。
正如您已经发现的那样,使用source
或.
运行 deoes 会影响当前的shell但是因为它运行的脚本不是一个子shell,但在当前 shell的上下文中。
如果要更改当前Ruby脚本的环境变量,应该查看ENV
,例如:
ENV["http_proxy"] = ""
ENV["https_proxy"] = ""
答案 1 :(得分:0)
%x( echo 'hi' )
并捕获变量
中的标准输出var = %x( echo 'hi' )