我如何在Lua脚本中确定系统的操作系统?
2008-11-17 7:24:7
收藏:0
阅读:682
评论:6
我需要从 Lua 脚本中确定系统的操作系统(OS),但是 Lua 没有相应的 API,所以我使用 os.getenv() 和查询环境变量。在 Windows 上,检查环境变量"OS"可以获取系统的操作系统名称,但是是否存在某个变量在 Windows 和大多数 Unix 变种上都可检查呢?
原文链接 https://stackoverflow.com/questions/295052
点赞
stackoverflow用户5190
我想如果你只需要检测 Windows/Unix,你可以检查文件系统是否存在 /etc 或者 /bin 或者 /boot 目录。此外,如果你需要知道是哪个发行版,大多数 Linux 发行版在 /etc 中都有一个显示发行版和版本的小文件,但很遗憾,它们都以不同的名称命名。
2008-11-17 07:34:19
stackoverflow用户41661
在 Unix 系统上,尝试使用以下定义的 os.capture 'uname':
function os.capture(cmd, raw)
local f = assert(io.popen(cmd, 'r'))
local s = assert(f:read('*a'))
f:close()
if raw then return s end
s = string.gsub(s, '^%s+', '')
s = string.gsub(s, '%s+$', '')
s = string.gsub(s, '[\n\r]+', ' ')
return s
end
这将适用于所有 Unix 和 Mac OSX 变种。 如果不起作用,你可能在 Windows 系统上?或者检查 os.getenv 'HOME'。
2008-11-28 21:05:00
stackoverflow用户626431
你可以尝试使用 package.config:sub(1,1)
。它会返回路径分隔符,在 Windows 下为 '\\'
,在 Unix 系统下为 '/'
...
2013-01-20 15:08:01
stackoverflow用户5032278
当编译lua时,根据编译所用的操作系统而做出略微不同的配置。
因此,'package'模块中设置的许多字符串可以用于区分其编译所用的操作系统。
例如,当lua加载以动态库形式分发的基于C的模块时,它必须知道用于这些库的扩展名,这在每个操作系统上都是不同的。
因此,您可以使用以下函数来确定操作系统。
local BinaryFormat = package.cpath:match("%p[\\|/]?%p(%a+)")
if BinaryFormat == "dll" then
function os.name()
return "Windows"
end
elseif BinaryFormat == "so" then
function os.name()
return "Linux"
end
elseif BinaryFormat == "dylib" then
function os.name()
return "MacOS"
end
end
BinaryFormat = nil
2015-06-21 00:06:46
stackoverflow用户2805176
FWIW
(顺便说一句),我能想到的最简单的函数如下:
function MyScript:OS()
return package.config:sub(1,1) == "\\" and "win" or "unix"
end
2022-10-14 18:39:41
评论区的留言会收到邮件通知哦~
推荐文章
- 求解,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 模式将字符串(嵌套数组)转换为真正的数组?
- 如何创建一个 lua 脚本以针对特定键为 fluentbit 进行限流
Unixes应该有$ HOME变量(而Windows没有),因此您可以在检查OS变量为空之后检查它。