在Lua中,获取当前目录的方法有多种,如:
- 使用 os.getcwd() 函数
local current_dir = os.getcwd()
- 使用os.getenv函数获取当前工作目录的绝对路径:
local current_dir = os.getenv("PWD")
- 使用io.popen函数执行pwd命令获取当前工作目录的绝对路径:
local current_dir = io.popen("pwd"):read("*l")
- 使用os.execute函数执行cd命令并获取返回值:
local current_dir = os.execute("cd")
- 使用io.lines函数读取当前工作目录的绝对路径:
local current_dir = io.lines():read("*l")
- 使用io.lines函数读取当前工作目录的相对路径:
local current_dir = io.lines():read("*l"):gsub("^%s*(.-)%s*$", "%1")
但是这些方法只局限在Unix/Linux系统上,在windows上基本不起作用。
目前在各种系统上能通用的方法是采用debug.getinfo函数的方法
local function getCurrentDirectory()
local path = debug.getinfo(1, "S").source:sub(2)
local directory = path:match("(.*/)")
return directory
end
或者
local function getCurrentDirectory()
local info = debug.getinfo(2)
local source = info.source
local directory = string.gsub(source, "^@(.*)/[^/]+%.lua$", "%1")
return directory
end