相对路径与脚本所在位置无关?Lua

假设我的电脑上有以下结构:

目录
    a.lua
    子目录
        b.lua

并且这是我的Lua代码:

-- a.lua
foo = "bar"

-- b.lua
dofile("../a.lua")
print(foo)

如果我现在从目录中运行lua b.lua,相对路径"../a.lua"是相对于目录的,解释器将抱怨b.lua不存在。如果我从子目录中运行同样的命令,那么相对路径"../a.lua"是相对于子目录的,所以它可以正常工作。

我的问题是:为什么相对路径与我们执行脚本的位置有关,如何让它们相对于脚本所在位置而不是位置,如CJSrequire

原文链接 https://stackoverflow.com/questions/69794172

点赞
stackoverflow用户1847592
stackoverflow用户1847592

这段代码(需要 Lua 5.2+)可从任何目录中运行。

-- b.lua
local path = (({...})[2] or arg[0]):gsub("[^/]*$", "")
dofile(path.."../a.lua")
print(foo)
2021-11-01 14:11:28