如何使用Lua设置Bash环境变量

我是Lua脚本功能的新手。 我尝试使用以下方法:

  1. os.execute("export MY\_VAR=10")
  2. io.popen("export MY\_VAR=10")

从Lua脚本中设置环境变量。

我尝试在Lua脚本执行后使用echo $MY\_VAR从shell中读取MY_VAR变量,但我没有看到MY_VAR设置为10。

我们如何使用Lua脚本设置环境变量?

点赞
用户258523
用户258523

你的问题不是一个 Lua 问题,而是你误解了进程环境是如何工作的。

每次运行 os.executeio.popen,你都会运行一个的进程,并且具备的环境。

因此,虽然你可能会在该进程的环境中正确设置 MY_VAR(并且它会影响作为该进程子进程运行的任何进程的环境),但它不会存活于任何已经运行的进程之外,因此任何其他进程都看不到它。

如果你想要影响 lua 进程的环境(这反过来又会影响由 Lua 运行的进程的环境),那么你需要绑定 setenv 系统函数(Lua 本身不提供此功能,因为它没有通过 Lua 用于包含在其中的东西所使用的测试)。

2016-08-12 00:23:26