我使用system command
在Ruby中执行命令,但我遇到了以下问题:
我使用Environment.bat
命令加载环境,我想执行 制作的第二个命令我在上一个命令中成功设置的环境使用。但是,似乎早先加载环境根本没有任何效果。
如何解决这个问题,以便我在后续执行的命令中使用我在ruby shell中加载的环境。
答案 0 :(得分:2)
您可能需要“链接”两个命令,以便它们在同一个system subshell中执行。也就是说,如果你在单独的ruby“系统”调用中执行两个命令,那么他们正在修改不直接相关的单独子程序的环境。
system("env.bat") # Executes in child process 1.
system("program.exe") # Executes in child process 2.
在上面的示例中,“program.exe”不知道“env.bat”是否通过添加新的环境变量(例如)来改变环境,因为它们在单独的,不相关的进程中运行。
system("env.bat && program.exe") # Both in the same child process.
但是在这个例子中,只要“env.bat”没有以错误代码退出,这两个命令就会在同一个子shell进程中一个接一个地运行。在这种情况下,“program.exe”可以访问由“env.bat”设置的任何新环境变量。