2011-04-21 228 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