Ruby命令执行中的问题



我正在使用system command在Ruby中执行命令,但我面临以下问题:

使用命令Environment.bat加载环境,并且我想执行第二个命令,其中使用了我在前一个命令中成功设置的环境。然而,似乎更早地加载环境根本没有任何影响。

如何解决这个问题,以便我在ruby shell中加载的环境在我之后执行的命令中使用。

您可能需要将两个命令"链接"起来,以便它们在同一个系统子shell中执行。也就是说,如果你在单独的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.

但是在这个例子中,这两个命令一个接一个地在同一个子shell进程中运行,只要"env.bat"不带错误代码退出。在这种情况下,"program.exe"将可以访问由"env.bat"设置的任何新的环境变量。

相关内容

  • 没有找到相关文章

最新更新