如何找到被包含在Lua应用程序中的库

我对 Linux 不太了解,所以如果我的问题非常基础,请原谅。我有一个代码片段,其中包含以下行:

    require("axf.sf")

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

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

但我找不到它。我知道代码存在,因为该程序可以正常工作。

感谢您的任何建议。

点赞
用户11649
用户11649

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”),并将每个点替换为 OS 的目录分隔符(在 Linux 上为“axf/sf”)。然后,它将每个模式中的 ? 替换为转换后的包名称,并使用在您的系统上存在的第一个模块。

因此,它会搜索:

./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
2013-03-14 19:51:22