好的,我需要从Lua脚本确定系统的操作系统,但是Lua本身没有这样的API,所以我使用os.getenv()并查询环境变量。在Windows上检查环境变量" OS“会给出系统操作系统的名称,但是是否有一些在Windows和大多数版本的Unix上都存在的变量可以检查?
发布于 2013-01-20 23:08:02
你可以试试package.config:sub(1,1)。它返回路径分隔符,在Windows上是'\\',在Unixes上是'/'…
发布于 2015-06-21 08:06:46
编译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发布于 2008-11-17 07:34:19
我猜,如果你只需要Windows/Unix检测,你可以检查文件系统中是否存在/etc、/bin或/boot目录。另外,如果你需要知道它是哪个发行版,大多数Linux发行版在/etc中都有一个小文件来显示发行版和版本,可悲的是它们都有不同的名称。
https://stackoverflow.com/questions/295052
复制相似问题