2011-04-21 216 views
0

我使用system command执行命令在红宝石,但我面临以下问题命令执行:问题在红宝石

使用命令Environment.bat加载环境,我想执行第二个命令,其中利用我在前面的命令中成功设置的环境。但是,似乎提前加载环境完全没有任何效果。

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

+0

'环境'是什么样子?那是一组系统变量还是什么?如果你显示一些代码,它可能真的有帮助 – 2011-04-21 09:58:22

回答

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. 

但是在这个例子中的两个命令都在相同的子shell进程中运行,一前一后,只要“env.bat文件”不退出并返回错误代码。在这种情况下,“program.exe”将有权访问由“env.bat”设置的任何新环境变量。

+0

感谢您的帮助。有效!!! – 2011-04-21 12:48:56