如何找到一个包含在lua应用程序中的库

时间:2013-03-14 19:30:27

标签: linux include lua

我对Linux很陌生,所以如果它真的很基础你就不得不原谅我的问题。我有一个代码段,其中包含以下行:

    require("axf.sf")

我正在尝试查找包含此代码的文件。 我在服务器上尝试了以下命令:

    find / -name axf.sf
    find / -name axf.sf*

但我无法找到它。我知道代码存在是因为程序有效。

任何建议将不胜感激。

1 个答案:

答案 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