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

Relative paths are not relative to where the script lives? Lua

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

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

此代码(Lua 5.2+ 要求)适用于任何目录

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