如何获取安装lua的全局路径

如何获取安装lua的全局路径,lua,Lua,我正在编写一个lua应用程序,它将包含一个相对路径,例如,无论lua安装在哪里,它都会将一个文件复制到clibs文件夹 getPath = getWhereLuaInstalled (could be C:\program file(x86)\lua\5.1 or c:\lua\5.1..) 使用package.path将为我返回lua搜索以查找可执行文件的所有路径。 有什么想法吗 谢谢看起来您是为windows计算机设计的(.dll和您的示例路径表明了这一点),所以这是一个可能的解决方案 本

我正在编写一个lua应用程序,它将包含一个相对路径,例如,无论lua安装在哪里,它都会将一个文件复制到clibs文件夹

getPath = getWhereLuaInstalled (could be C:\program file(x86)\lua\5.1 or c:\lua\5.1..)
使用package.path将为我返回lua搜索以查找可执行文件的所有路径。 有什么想法吗


谢谢

看起来您是为windows计算机设计的(.dll和您的示例路径表明了这一点),所以这是一个可能的解决方案

本地io=需要“io”
函数getWhereLuaInstalled()
本地句柄=io.popen('where lua')
本地路径=句柄:读取('*a'):匹配((.\\))
句柄:close()
返回路径
结束

通过将
where lua
替换为
which lua

可以很容易地修改linux系统的这一点,通常只需使用一个点(
)。您可以向其添加相对路径:
/my/relative/path

为什么
package.cpath不符合您的要求?是的,它将包含多个路径,但它们都应该可以工作。@EtanReisner嗨,我只需要一个路径就可以将文件复制到lua/5.1/clibs并将其用作默认路径,这就是为什么我不需要全部解析,比如说,从
package.cpath
解析出第一个路径。此外,Lua经常嵌入到另一个程序中,因此它本身并不是真正“安装”的。对,如果您需要一个路径并获得它们的列表,只需选择一个。但是,除非这是一个安装程序应用程序,否则我建议不要这样做。如果它是一个安装程序,那么如果你能找到它,那么使用安装程序存储位置(可能在注册表中)可能是一个更好的主意。@Colonelthirty这里我需要做的是,我有一个dll,它的路径将被添加到注册表中,lua应用程序将dll存储在lua/5.1/clibs中,根据嵌入lua的用户使用完整路径。