2016-08-12 96 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 –