相对路径与脚本所在的位置无关? 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)
假设我的电脑上有以下结构:
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)