在 Sublime Text 3 中构建时出现权限被拒绝的问题

我正在使用 Windows 10 上的 Sublime Text 3 和 Lua。当我尝试构建和运行脚本时,会收到以下错误消息:

lua: cannot open C:\Program Files (x86)\Lua\5.1: Permission denied

我已经对文件夹添加了完全权限。

我只尝试运行一个简单的打印语句: print("hello")

预期的结果是在结果窗口输出 hello

点赞
用户814803
用户814803

Sublime 中用于执行 Lua 程序的构建系统如下:

{
    "cmd": ["lua", "$file"],
    "file_regex": "^(?:lua:)?[\t ](...*?):([0-9]*):?([0-9]*)",
    "selector": "source.lua"
}

重要的是要执行的命令是 lua,第一个参数是当前文件的名称。从您看到的错误消息来看,Lua似乎在尝试执行一个目录而不是程序名称。或者说,如果这是一个目录权限问题,我希望它能告诉您无法访问的文件的名称,而不是存储文件的文件夹。

也很可疑的是文件夹的名称是 lua 本身的安装位置,并且错误消息似乎表明是 lua 本身生成的错误。

基于这一切,我的猜测是您在执行命令之前没有保存 Lua 脚本。这将导致 $file 扩展为空字符串,使第一个参数为空。由于构建使用 cmd,在内部,Windows 被告知使用空字符串作为第一个参数运行名为 lua 的程序。

显然解释器首先尝试将当前工作目录放入文件名中,然后执行它,由于文件名为空,它最终尝试执行一个目录,这就是权限问题的来源。

在您第一次保存文件并且它拥有名称之后,只要选中了 Tools > Save all on build,Sublime 就会在每次运行构建时自动重新保存它。但是,该选项不会提示您保存尚未具有名称的全新文件。

2019-04-11 18:12:18