2016-08-12 98 views
1

我是lua腳本功能的新手。 我嘗試使用,如何使用lua設置bash環境變量

  1. os.execute( 「出口MY_VAR = 10」)
  2. io.popen( 「出口MY_VAR = 10」)

從LUA腳本。

我嘗試閱讀使用回聲$ MY_VAR殼MY_VAR變量執行LUA腳本之後,但我沒有看到MY_VAR越來越設置爲10

我們如何設置使用Lua腳本中的環境變量?

+0

您可以做的一個解決方法是讓Lua代碼輸出Bash腳本的內容,然後使用腳本的bash「source」或「eval」。 – hugomg

回答

4

你的問題不是lua問題。你的問題是誤解過程環境的工作原理。

運行os.executeio.popen每次運行一個新過程環境。

因此,儘管你可能是正確設置在MY_VAR處理環境(它會影響運行的進程的子進程的任何進程)不會活過啓動的過程中死亡,因此不能被視爲通過任何其他進程。如果你想影響lua進程的環境(這反過來會影響lua運行的進程的環境),那麼你需要一個綁定到系統函數setenv(lua本身並沒有提供它不通過清潔 lua用於包括它的東西的C測試)。

+1

是的。 luaposix中有一個'setenv'綁定:http://luaposix.github.io/luaposix/modules/posix.stdlib.html#setenv –