Lua — как добавить переменную path в OSX

#lua #environment-variables

#lua #переменные среды

Вопрос:

Может ли кто-нибудь перечислить шаги, которые мне нужно предпринять, чтобы поместить файл lua (theclass.lua) куда-нибудь в мою систему, чтобы я мог это сделать:

 require 'theclass'
  

и компилятор найдет ее без необходимости копировать класс в каждый каталог?

Ответ №1:

Список мест, куда вы можете ее поместить, является частью, если вы получаете сообщение об ошибке:

 ~ e$ lua
Lua 5.1.4  Copyright (C) 1994-2008 Lua.org, PUC-Rio
> require 'theclass'
stdin:1: module 'theclass' not found:
no field package.preload['theclass']
no file './theclass.lua'
no file '/usr/local/share/lua/5.1/theclass.lua'
no file '/usr/local/share/lua/5.1/theclass/init.lua'
no file '/usr/local/lib/lua/5.1/theclass.lua'
no file '/usr/local/lib/lua/5.1/theclass/init.lua'
no file './theclass.so'
no file '/usr/local/lib/lua/5.1/theclass.so'
no file '/usr/local/lib/lua/5.1/loadall.so'
stack traceback:
[C]: in function 'require'
stdin:1: in main chunk
[C]: ?
> 
  

Lua запрашивает список каталогов для поиска по крайней мере в трех местах:

C LUA_PATH в заголовке конфигурации

Глобальный Lua LUA_PATH

Переменная среды LUA_PATH

Смотрите PiL

Комментарии:

1. На самом деле Lua использует package.path значение по умолчанию, полученное из переменной окружения LUA_PATH , если оно установлено. Lua никогда не просматривает глобальную переменную LUA_PATH .

2. О, страница 1 в lua.org/pil/8.1.html должно быть, устарело: «Чтобы определить ее путь, require сначала проверяет глобальную переменную LUA_PATH». Я вижу, это исправлено в разделе 15.1 моей бумажной копии PiL 2. Спасибо, Луис!

3. Онлайн-версия PiL предназначена для Lua 5.0, в которой использовалась глобальная переменная LUA_PATH . Сравните lua.org/source/5.0/src_lib_lbaselib.c.html#getpath с lua.org/source/5.1/loadlib.c.html#setpath .