Lua中获取用户配置主目录的跨平台方法

主要的操作系统似乎都有一个指定的位置来存储配置文件。

在Linux上,可能会是$HOME/.myprogram/data$HOME/.config/myprogram/data,或者更好的做法是读取$XDG_CONFIG_HOME

在macOS上,它会是$HOME/.myprogram/data$HOME/Library/Preferences/myprogram/data

在Windows上,它会是%appdata%/myprogram/data

如何以一种可移植的方式获取这样的值在Lua中?

原文链接 https://stackoverflow.com/questions/71337246

点赞
stackoverflow用户11740758
stackoverflow用户11740758

使用以下代码检查变量的存在条件...

if (os.getenv('XDG_CONFIG_HOME')) then
 os.execute('ls ' .. os.getenv('XDG_CONFIG_HOME'))
else -- 或者:elseif (nextcondition) then
 print('XDG_CONFIG_HOME', '不存在')
 -- 可以在此进行下一次检查?
end

但请注意,用户可能仅使用 Lua 需要的环境启动 Lua。 例如...

lua()
{
    env -i DISPLAY=:0 LANG='de_DE.UTF-8' TERM='xterm-256color' LUA_PATH='./lua/?.lua' LUA_CPATH='./lua/?.so' /usr/local/bin/lua "${@}"
}

然后检查 XDG_CONFIG_HOME 将始终失败。

因为上述 env 环境不知道 HOME、USER 和 XDG_CONFIG_HOME。

PS:我也知道我的 Linux 系统保存配置/保存游戏或其他文件的地方

${HOME}/.local/share/
2022-03-03 15:28:49