Is there a global variable in Lua that contains the path to the file currently being interpreted? Something like Python\'s __file__
variable?
I ran a qu
In Lua 5.2, when a script is loaded via require
, it receives as arguments the module name given to require
and the filename that require
used to open the script:
$ cat a.lua
require"b"
$ cat b.lua
print("in b",...)
$ lua a.lua
in b b ./b.lua
In Lua 5.1, only the module name is passed, not the filename.
In response to the answer by lhf:
Being new to Lua, I was initially confused what ...
meant. Turns out it's a vararg just like with ANSI C: https://www.lua.org/manual/5.3/manual.html#3.4. In my experience with lua 5.3, using
local packageName, packagePath = ...
got me the package name as when used in a require and the absolute file path of the package.
The debug library has a getinfo
method you can call, which can return, amongst other things, the source file for a function.
local info = debug.getinfo(1,'S');
print(info.source);
That would return the name of the source file (which will begin with an @ symbol, indicating it is a filename) of the function at the first level of the call stack. By passing 1
you are asking for information about the current function. If you passed in 0
it would return =[C]
as it would be returning information about the getinfo
function itself.
For more detailed information check out the Programming in Lua
reference on the official Lua website:
http://www.lua.org/pil/23.1.html