Spec-Zone.ru › Elisp

Операционная среда

Emacs предоставляет доступ к переменным операционной среды с помощью различных функций. К этим переменным относятся имя системы, UID пользователя и т. д.

Переменная: system-configuration

Эта переменная содержит стандартное имя конфигурации GNU для аппаратной и программной конфигурации вашей системы в виде строки. Например, типичное значение для 64-разрядной системы GNU/Linux — ‘"x86_64-unknown-linux-gnu"’.

Переменная: system-type

Значение этой переменной — символ, указывающий тип операционной системы, в которой работает Emacs. Возможны следующие значения:

aix

AIX от IBM.

berkeley-unix

Berkeley BSD и её варианты.

cygwin

Cygwin — слой POSIX поверх MS-Windows.

darwin

Darwin (macOS).

gnu

Система GNU (использующая ядро GNU, состоящее из HURD и Mach).

gnu/linux

Система GNU/Linux, то есть вариант системы GNU, использующий ядро Linux. (Эти системы часто называют «Linux», хотя на самом деле Linux — это только ядро, а не вся система.)

gnu/kfreebsd

Система GNU на основе glibc с ядром FreeBSD.

haiku

Операционная система Haiku, производная от Be Operating System.

hpux

Операционная система Hewlett-Packard HPUX.

nacl

Система изолированных приложений Google Native Client (NaCl).

android

Операционная система Android от Open Handset Alliance.

ms-dos

DOS от Microsoft. Emacs, скомпилированный с помощью DJGPP для MS-DOS, привязывает system-type к ms-dos, даже если запустить его в MS-Windows.

usg-unix-v

Unix System V от AT&T.

windows-nt

Microsoft Windows NT, 9X и более поздние версии. Значение system-type всегда равно windows-nt, например, даже в Windows 10.

Мы не хотим добавлять новые символы для более точного различения систем, если в этом нет крайней необходимости! Более того, мы надеемся со временем отказаться от некоторых из этих вариантов. Если вам нужно различать системы точнее, чем позволяет system-type, можно проверить system-configuration, например, с помощью регулярного выражения.

Функция: system-name

Эта функция возвращает в виде строки имя компьютера, на котором вы работаете.

Пользовательский параметр: mail-host-address

Если эта переменная не равна nil, она используется вместо system-name при формировании адресов электронной почты. Например, она используется при создании значения по умолчанию для user-mail-address. См. раздел Идентификация пользователя.

Команда: getenv var &optional frame

Эта функция возвращает значение переменной среды var в виде строки. var должна быть строкой. Если var не определена в среде, getenv возвращает nil. Если var задана, но имеет значение null, функция возвращает ‘""’. В Emacs список переменных среды и их значений хранится в переменной process-environment.

Необязательный аргумент frame, если он не равен nil, указывает кадр; в этом случае функция ищет var в параметре environment кадра frame (см. раздел Основные параметры), а не в process-environment.

Переменная среды ‘DISPLAY’ обрабатывается особым образом, если аргумент frame опущен или равен nil: если эта переменная не найдена в process-environment, функция проверяет параметр display выбранного кадра, а если он равен nil, также проверяет initial-environment.

(getenv "USER")
     ⇒ "lewis"

Команда оболочки printenv выводит всю среду или её часть:

bash$ printenv
PATH=/usr/local/bin:/usr/bin:/bin
USER=lewis
TERM=xterm
SHELL=/bin/bash
HOME=/home/lewis
...
Команда: setenv variable &optional value substitute

Эта команда задаёт для переменной среды с именем variable значение value. variable должна быть строкой. Внутри Emacs Lisp может работать с любой строкой. Однако обычно variable должна быть допустимым идентификатором оболочки, то есть последовательностью букв, цифр и знаков подчёркивания, начинающейся с буквы или знака подчёркивания. В противном случае могут возникнуть ошибки, если подпроцессы Emacs попытаются получить значение variable. Если аргумент value опущен или равен nil (или, в интерактивном режиме, передан префиксный аргумент), setenv удаляет variable из среды. В противном случае value должна быть строкой.

Если необязательный аргумент substitute не равен nil, Emacs вызывает функцию substitute-env-vars для подстановки значений переменных среды в value.

setenv работает, изменяя process-environment; также рекомендуется привязывать эту переменную с помощью let.

setenv возвращает новое значение variable или nil, если переменная variable удалена из среды.

Макрос: with-environment-variables variables body…

Этот макрос временно задаёт переменные среды согласно variables на время выполнения body. После завершения формы прежние значения восстанавливаются. Аргумент variables должен быть списком пар строк вида (var value), где var — имя переменной среды, а value — её значение.

(with-environment-variables (("LANG" "C")
                             ("LANGUAGE" "en_US:en"))
  (call-process "ls" nil t))
Переменная: process-environment

Эта переменная представляет собой список строк, каждая из которых описывает одну переменную среды. Функции getenv и setenv работают с помощью этой переменной.

process-environment
⇒ ("PATH=/usr/local/bin:/usr/bin:/bin"
    "USER=lewis"
    "TERM=xterm"
    "SHELL=/bin/bash"
    "HOME=/home/lewis"
    ...)

Если process-environment содержит несколько элементов, задающих одну и ту же переменную среды, значение переменной задаётся первым из этих элементов, а остальные игнорируются.

Переменная: initial-environment

Эта переменная содержит список переменных среды, унаследованных Emacs от родительского процесса при запуске.

Переменная: path-separator

Эта переменная содержит строку, указывающую, какой символ разделяет каталоги в пути поиска (например, в переменной среды). Её значение — ":" для систем Unix и GNU и ";" для систем MS.

Функция: path-separator

Эта функция возвращает локальное для соединения значение переменной path-separator. Это значение ";" для систем MS и локального default-directory, а также ":" для систем Unix и GNU или удалённого default-directory.

Функция: parse-colon-path path

Эта функция принимает строку пути поиска, например значение переменной среды PATH, и разделяет её по разделителям, возвращая список каталогов. nil в этом списке означает текущий каталог. Несмотря на слово «colon» («двоеточие») в имени функции, она фактически использует значение переменной path-separator.

(parse-colon-path ":/foo:/bar")
     ⇒ (nil "/foo/" "/bar/")
Переменная: invocation-name

Эта переменная содержит имя программы, под которым был запущен Emacs. Значение представляет собой строку и не включает имя каталога.

Переменная: invocation-directory

Эта переменная содержит каталог, в котором находился исполняемый файл Emacs при запуске, или nil, если определить этот каталог невозможно.

Переменная: installation-directory

Если значение не равно nil, эта переменная содержит каталог, в котором следует искать подкаталоги lib-src и etc. В установленном Emacs её значение обычно равно nil. Значение отлично от nil, если Emacs не может найти эти каталоги в стандартных местах установки, но может найти их в каталоге, каким-либо образом связанном с каталогом исполняемого файла Emacs (то есть invocation-directory).

Функция: load-average &optional use-float

Эта функция возвращает список текущих средних значений загрузки системы за 1, 5 и 15 минут. Среднее значение загрузки показывает количество процессов, пытающихся выполняться в системе.

По умолчанию возвращаются целые числа, равные средним значениям загрузки системы, умноженным на 100. Если аргумент use-float не равен nil, значения возвращаются как числа с плавающей точкой без умножения на 100.

Если получить среднее значение загрузки невозможно, эта функция сигнализирует об ошибке. На некоторых платформах для доступа к средним значениям загрузки необходимо установить Emacs с битом setuid или setgid, чтобы он мог считывать информацию ядра; обычно этого делать не рекомендуется.

Если доступно среднее значение загрузки за 1 минуту, но недоступны значения за 5 или 15 минут, функция возвращает укороченный список, содержащий доступные значения.

(load-average)
     ⇒ (169 48 36)
(load-average t)
     ⇒ (1.69 0.48 0.36)

Команда оболочки uptime возвращает аналогичную информацию.

Функция: emacs-pid

Эта функция возвращает идентификатор процесса Emacs (ID) в виде целого числа.

Переменная: tty-erase-char

Эта переменная содержит символ удаления, выбранный в драйвере терминала системы до запуска Emacs.

Переменная: null-device

Эта переменная содержит имя системного нулевого устройства. Её значение — "/dev/null" для систем Unix и GNU и "NUL" для систем MS.

Функция: null-device

Эта функция возвращает локальное для соединения значение переменной null-device. Это значение "NUL" для систем MS и локального default-directory, а также "/dev/null" для систем Unix и GNU или удалённого default-directory.

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/System-Environment.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API