Поиск файлов в стандартных местах
В этом разделе объясняется, как искать файл в списке каталогов (пути) или исполняемый файл в стандартном списке каталогов исполняемых файлов.
О поиске файла конфигурации пользователя см. Стандартные имена файлов и описание функции locate-user-emacs-file.
- Функция: locate-file filename path &optional suffixes predicate
-
Эта функция ищет файл с именем filename в списке каталогов, заданном параметром path, перебирая суффиксы из suffixes. Если файл найден, функция возвращает его абсолютное имя (см. Абсолютные и относительные имена файлов); в противном случае она возвращает
nil.Необязательный аргумент suffixes задаёт список суффиксов имён файлов, которые добавляются к filename при поиске.
locate-fileпроверяет каждый возможный каталог с каждым из этих суффиксов. Если suffixes равенnilили(""), суффиксы не используются, а filename проверяется без изменений. Типичные значения suffixes —exec-suffixes(см. Функции создания подпроцессов),load-suffixes,load-file-rep-suffixesи возвращаемое значение функцииget-load-suffixes(см. Суффиксы загрузки).Типичными значениями path являются
exec-path(см. Функции создания подпроцессов) при поиске исполняемых программ илиload-path(см. Поиск библиотек) при поиске файлов Lisp. Если filename является абсолютным именем, параметр path не влияет на поиск, однако суффиксы из suffixes по-прежнему проверяются.Необязательный аргумент predicate, если он не равен
nil, задаёт функцию-предикат для проверки пригодности найденного файла. В качестве единственного аргумента предикату передаётся имя проверяемого файла. Если predicate равенnilили не указан,locate-fileиспользует в качестве предикатаfile-readable-p. Другие полезные предикаты, напримерfile-executable-pиfile-directory-p, см. в разделе Различение типов файлов.Обычно эта функция пропускает каталоги, поэтому, если нужно найти каталог, убедитесь, что функция predicate возвращает для него
dir-ok. Например:(locate-file "html" '("/var/www" "/srv") nil (lambda (f) (if (file-directory-p f) 'dir-ok)))Для обеспечения совместимости predicate также может быть одним из символов
executable,readable,writable,existsили списком из одного или нескольких таких символов.
- Функция: executable-find program &optional remote
-
Эта функция ищет исполняемый файл указанной программы program и возвращает абсолютное имя исполняемого файла, включая расширения имени файла, если они есть. Если файл не найден, функция возвращает
nil. Функция ищет во всех каталогах изexec-pathи проверяет все расширения имён файлов изexec-suffixes(см. Функции создания подпроцессов).Если remote не равен
nil, аdefault-directoryявляется удалённым каталогом, поиск program выполняется на соответствующем удалённом узле.
Copyright © 1990-1996, 1998-2026 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Locating-Files.html