打印所有环境变量的列表。
2017-5-23 12:1:59
收藏:0
阅读:233
评论:5
我想打印出所有环境变量及其值的列表。我在 Stackoverflow 上查询了一些问题,以下几个问题非常接近但并未回答我的问题:
- 如何发现Lua环境中有哪些内容? (关于Lua环境而非系统环境变量)
- 在Lua中打印可访问当前作用域的所有本地变量 (再次介绍了 _G 而非 os 环境变量)
- http://www.lua.org/manual/5.1/manual.html#pdf-os.getenv (这是一个很好的函数,但我必须知道环境变量的名称才能调用它)
与 C 不同,Lua 没有将 envp**
参数传递给 main()
的方法,因此我无法找到获取所有环境变量列表的方法。 是否有人知道如何获取所有环境变量的名称和值列表?
原文链接 https://stackoverflow.com/questions/7633397
点赞
stackoverflow用户107090
这段代码从一个旧的 POSIX 绑定中提取而来。
static int Pgetenv(lua_State *L) /** getenv([name]) */
{
if (lua_isnone(L, 1))
{
extern char **environ;
char **e;
if (*environ==NULL) lua_pushnil(L); else lua_newtable(L);
for (e=environ; *e!=NULL; e++)
{
char *s=*e;
char *eq=strchr(s, '=');
if (eq==NULL) /* will this ever happen? */
{
lua_pushstring(L,s);
lua_pushboolean(L,0);
}
else
{
lua_pushlstring(L,s,eq-s);
lua_pushstring(L,eq+1);
}
lua_settable(L,-3);
}
}
else
lua_pushstring(L, getenv(luaL_checkstring(L, 1)));
return 1;
}
2011-10-04 13:30:05
stackoverflow用户531243
你可以安装lua-posix
模块。或者,RedHat安装有内置的POSIX例程,但是要启用它们,你需要做一个小技巧:
cd /usr/lib64/lua/5.1/
#(用你的版本替换5.1)
ln -s ../../librpmio.so.1 posix.so
#(根据需要替换“1”)
lua -lposix
> for i, s in pairs(posix.getenv()) do print(i,s,"\n") end
这个技巧在创建一个软链接到RPM的“io”目录并且将软链接命名为LUA将尝试打开的库的相同名称。如果你不这样做,你会得到:
./librpmio.so:undefined symbol:luaopen_librpmio
或类似的错误。
2013-08-13 16:13:43
stackoverflow用户4804353
本地环境变量 = {}
for line in io.popen("set"):lines() do
envName = line:match("^[^=]+")
本地环境变量[envName] = os.getenv(envName)
end
这个方法在一些情况下无法工作,例如 "运行您的应用程序的用户没有有效的 shell"。
2015-04-18 11:35:03
stackoverflow用户16179734
一个简单的 2 行代码:
buf = io.popen("env", '*r')
output = buf:read('*a')
print(output) -- 或者做其他事情
2021-06-09 20:15:36
评论区的留言会收到邮件通知哦~
推荐文章
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
Standard Lua 函数
标准的 Lua 函数是基于 C 标准函数的,而且并不存在获取所有环境变量的 C 标准函数。因此,在 Lua 中也没有标准函数可以实现该功能。
您需要使用像 luaex 这样的模块来实现该功能。