1. 程式人生 > >perl實現設定環境變數並執行程式

perl實現設定環境變數並執行程式

  需求:perl指令碼控制實驗過程,由於不同的應用程式需要設定不同的實驗環境,因此需要根據輸入重置環境變數。環境變數的初始化方法為:source env.sh與source henv.sh,編譯命令為$compile,執行命令為$run,要求必須在重置的環境變數裡編譯執行程式。

   在perl腳本里通過system呼叫系統呼叫實現,但是system都是單獨的程序,一旦返回後,其建立的環境也會丟失,因此需要由system派生的程序同時執行建立環境、編譯與執行工作(至於為什麼perl不能將環境變量回傳給父程序,可參考附錄1)。因此需要將perl命令寫成如下形式:

system("source $env.sh  && $compile && $run" );

  另外,source是shell內嵌命令,因此直接呼叫例如:

  system("source $env.sh")

  上述做法並不會真正改變system派生子程序的環境變數,必須通過在後面加&&或者顯式直接呼叫shell命令才可以,正確做法如下所示:

1)system("source $env.sh &&  which gcc"),因為當程序找不到命令source時,第一次時並不會搜尋相關指令,第二次則會。

2)system("/usr/bin/shell",  "-c", "source $env.sh");

但是,我現在未找到在2)情形下如何執行多個命令的方法,有人知道不?