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

來源:互聯網
上載者:User

  需求: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)情形下如何執行多個命令的方法,有人知道不?

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.