Операционная среда
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