Emacs предоставляет доступ к переменным окружения операционной системы через различные функции. Эти переменные включают имя системы, UID пользователя и так далее.
Эта переменная содержит стандартное имя конфигурации GNU для аппаратной/программной конфигурации вашей системы в виде строки. Например, типичное значение для 64-битной системы GNU/Linux — ‘"x86_64-unknown-linux-gnu"’.
Значение этой переменной — символ, указывающий тип операционной системы, в которой работает Emacs. Возможные значения:
aixAIX от IBM.
berkeley-unixBerkeley BSD и его варианты.
cygwinCygwin — уровень POSIX поверх MS-Windows.
darwinDarwin (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Операционная система HPUX от Hewlett-Packard.
naclСистема изоляции Google Native Client (NaCl).
androidОперационная система Android от Open Handset Alliance.
ms-dosDOS от Microsoft. Emacs, скомпилированный с DJGPP для MS-DOS, привязывает system-type к ms-dos, даже если вы запускаете его в MS-Windows.
usg-unix-vAT&T Unix System V.
windows-ntMicrosoft Windows NT, 9X и более поздние. Значение system-type всегда равно windows-nt, например, даже в Windows 10.
Мы не хотим добавлять новые символы для более тонких различий, если это абсолютно не необходимо! Фактически, мы надеемся в будущем исключить некоторые из этих вариантов. Если вам нужно провести более тонкое различие, чем позволяет system-type, вы можете проверить system-configuration, например, с помощью регулярного выражения.
Эта функция возвращает имя машины, на которой вы работаете, в виде строки.
Если эта переменная не равна nil, она используется вместо system-name для целей формирования адресов электронной почты. Например, она используется при построении значения по умолчанию для user-mail-address. См. Идентификация пользователя.
Эта функция возвращает значение переменной окружения var в виде строки. var должна быть строкой. Если var не определена в окружении, getenv возвращает nil. Она возвращает ‘""’, если var установлена, но пуста. Внутри Emacs список переменных окружения и их значений хранится в переменной process-environment.
(getenv "USER")
⇒ "lewis"
Команда оболочки printenv выводит всё или часть окружения:
bash$ printenv PATH=/usr/local/bin:/usr/bin:/bin USER=lewis
TERM=xterm SHELL=/bin/bash HOME=/home/lewis
…
Эта команда устанавливает значение переменной окружения с именем 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 из окружения.
Этот макрос временно устанавливает переменные окружения согласно variables при выполнении body. Предыдущие значения восстанавливаются после завершения формы. Аргумент variables должен быть списком пар строк вида (var value), где var — имя переменной окружения, а value — её значение.
(with-environment-variables (("LANG" "C")
("LANGUAGE" "en_US:en"))
(call-process "ls" nil t))
Эта переменная представляет собой список строк, каждая из которых описывает одну переменную окружения. Функции getenv и setenv работают посредством этой переменной.
process-environment
⇒ ("PATH=/usr/local/bin:/usr/bin:/bin"
"USER=lewis"
"TERM=xterm"
"SHELL=/bin/bash"
"HOME=/home/lewis"
…)
Если process-environment содержит несколько элементов, задающих одну и ту же переменную окружения, первый из этих элементов определяет переменную, а остальные игнорируются.
Эта переменная содержит список переменных окружения, унаследованных Emacs от родительского процесса при запуске Emacs.
Эта переменная содержит строку, указывающую, какой символ разделяет каталоги в пути поиска (как указано в переменной окружения). Её значение — ":" для систем Unix и GNU и ";" для систем MS.
Эта функция возвращает значение переменной path-separator, привязанное к конкретному соединению. То есть ";" для систем MS и локального default-directory и ":" для систем Unix и GNU или удалённого default-directory.
Эта функция принимает строку пути поиска, например, значение переменной окружения PATH, и разбивает её по разделителям, возвращая список каталогов. nil в этом списке означает текущий каталог. Хотя в названии функции сказано “colon”, на самом деле она использует значение переменной path-separator.
(parse-colon-path ":/foo:/bar")
⇒ (nil "/foo/" "/bar/")
Эта переменная содержит имя программы, под которым был вызван Emacs. Значение — строка, не включающая имя каталога.
Эта переменная содержит каталог, в котором находился исполняемый файл Emacs при его запуске, или nil, если этот каталог не может быть определён.
Если не равна nil, это каталог, в котором следует искать подкаталоги lib-src и etc. В установленном Emacs обычно равна nil. Она не равна nil, когда Emacs не может найти эти каталоги в стандартных установленных местах, но может найти их в каталоге, связанном каким-либо образом с каталогом, содержащим исполняемый файл Emacs (т.е. invocation-directory).
Эта функция возвращает текущую среднюю загрузку системы за 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 выдаёт аналогичную информацию.
Эта функция возвращает идентификатор процесса ID процесса Emacs в виде целого числа.
Эта переменная содержит символ стирания, выбранный в драйвере терминала системы до запуска Emacs.
Эта переменная содержит системное пустое устройство. Её значение — "/dev/null" для систем Unix и GNU и "NUL" для систем MS.
Эта функция возвращает значение переменной null-device, привязанное к конкретному соединению. То есть "NUL" для систем MS и локального default-directory, и "/dev/null" для систем Unix и GNU или удалённого default-directory.