我对Linux很陌生,所以如果它真的很基础你就不得不原谅我的问题。我有一个代码段,其中包含以下行:
require("axf.sf")
我正在尝试查找包含此代码的文件。 我在服务器上尝试了以下命令:
find / -name axf.sf
find / -name axf.sf*
但我无法找到它。我知道代码存在是因为程序有效。
任何建议将不胜感激。
答案 0 :(得分:3)
与许多语言一样,Lua具有搜索所需模块的“路径”概念。
它可以通过多种方式配置,但通常类似于
./?.lua;/usr/local/share/lua/5.1/?.lua;/usr/local/share/lua/5.1/?/init.lua;/usr/local/lib/lua/5.1/?.lua;/usr/local/lib/lua/5.1/?/init.lua;/usr/share/lua/5.1/?.lua;/usr/share/lua/5.1/?/init.lua
(您可以通过在Lua提示下输入=package.path
来验证您的身份是否有所不同)
默认包搜索器首先获取包名称(在您的示例中为“axf.sf”),并用操作系统的目录分隔符替换每个点。 (在你的例子中是“axf / sf”,因为你在Linux上)。然后,它将每个模式的?
替换为已转换的包名称,并使用系统中存在的第一个模式。
所以,它会搜索
./axf/sf.lua
/usr/local/share/lua/5.1/axf/sf.lua
/usr/local/share/lua/5.1/axf/sf/init.lua
/usr/local/lib/lua/5.1/axf/sf.lua
/usr/local/lib/lua/5.1/axf/sf/init.lua
/usr/share/lua/5.1/axf/sf.lua
/usr/share/lua/5.1/axf/sf/init.lua