2016-12-28 86 views
2

僅限於Lua的Windows嵌入式實例 - 共享環境 - 對語言的最新更改。在Lua 5.3腳本中設置shell環境變量

Lua腳本的結果需要提供給嵌入式Lua 5.3解釋器的Windows主機應用程序。大多數情況下,我們會將結果寫入文本文件或剪貼板,並讓主機在腳本完成後讀取這些結果。另一種方法是在當前宿主和解釋器共享的環境中設置一個envar(環境變量)。它會消除fileIO和一些字符串複製操作。

Lua有os.getenv()但是沒有os.setenv()因爲後者不是ANSI-C的一部分。聲稱能夠更改環境變量的外部模塊似乎在_G中更改了本地副本,而不是真正的主機當前環境。 (因爲我沒有閱讀所有的資料,所以我在這裏以他們的封面來判斷這些書籍。)此外,自5.3版本以來,全球變量_G不再存在,我假定這些模塊中的大多數不會與當前版本的Lua。

問題:哪個模塊允許在當前環境中更改變量並且與Lua 5.3兼容?

+0

[如何使用lua設置bash環境變量](http://stackoverflow.com/questions/38907930/how-to-set-bash-environment-variables-using-lua) –

+0

第一行總結我的問題有四點不同。 – user123365

+0

可以嘗試我的https://github.com/moteus/lua-environ。但是它不允許改變一些外國程序的環境。僅適用於當前進程。 – moteus

回答

0

您可以使用winapi模塊中的setenv來更改當前進程的環境(它在內部使用SetEnvironmentVariable)。

+0

這個函數有緩衝區溢出的問題。我在4年前就報道過這個問題。測試用例'setenv('xxxx',('1'):rep(1300)' – moteus

+0

我確信史蒂夫將會收到一個請求... –

相關問題