假设我的计算机上有以下结构:
directory
a.lua
subdirectory
b.lua
这段Lua代码:
-- a.lua
foo = "bar"
-- b.lua
dofile("../a.lua")
print(foo)
如果我现在从目录运行lua b.lua
,相对路径"../a.lua"
是相对于目录的,而解释器报告b.lua不存在。如果我从子目录中运行相同的命令,那么相对路径"../a.lua"
是相对于子目录的,所以它可以工作。
我的问题是:为什么相对路径是相对于我们执行脚本的位置的,我如何才能使它们相对于脚本所在的位置,就像在CJS require
中一样?
发布于 2021-11-01 14:11:28
这段代码(需要Lua 5.2+ )可以在任何目录下运行
-- b.lua
local path = (({...})[2] or arg[0]):gsub("[^/]*$", "")
dofile(path.."../a.lua")
print(foo)
https://stackoverflow.com/questions/69794172
复制相似问题