我想知道是否有一种方法可以获得当前执行的lua脚本文件的路径?
这特别不是当前的工作目录,它可能是完全不同的。我知道luafilesystem会让我得到当前的工作目录,但它似乎不能告诉我当前正在执行的脚本文件。
谢谢
编辑:我不是从标准的命令行解释器运行,而是通过luabind从C++二进制文件执行脚本。
发布于 2011-06-17 10:46:14
如果Lua脚本是由标准命令行解释器运行的,那么可以尝试使用arg[0]
。
发布于 2014-05-08 15:24:27
这是一种更优雅的方式:
function script_path()
local str = debug.getinfo(2, "S").source:sub(2)
return str:match("(.*/)")
end
print(script_path())
发布于 2011-06-17 10:47:46
正如lhf所说:
~ e$ echo "print(arg[0])" > test.lua
~ e$ lua test.lua
test.lua
~ e$ cd /
/ e$ lua ~/test.lua
/Users/e/test.lua
/ e$
下面是使用debug.getinfo机制的相同信息
~ e$ echo "function foo () print(debug.getinfo(1).source) end; foo()" > test.lua
~ e$ lua test.lua
@test.lua
~ e$ cd /
/ e$ lua ~/test.lua
@/Users/e/test.lua
/ e$
这可以从C应用编程接口lua_getinfo获得
https://stackoverflow.com/questions/6380820
复制相似问题