Операционная система
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.
hpux-
Операционная система Hewlett-Packard HPUX.
nacl-
Система песочницы Google Native Client (NaCl).
ms-dos-
DOS от Microsoft. Emacs, скомпилированный с DJGPP для MS-DOS, связывает
system-typeсms-dosдаже при запуске на MS-Windows. usg-unix-v-
Система V Unix от 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 задана, но является пустой строкой. В 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
…
- Команда: 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 от родительского процесса при запуске Emacs.
- Переменная: path-separator
Эта переменная содержит строку, указывающую, какой символ разделяет каталоги в пути поиска (как в переменной среды). Ее значение —
":"для Unix и GNU систем, и";"для систем MS.
- Функция: path-separator
Эта функция возвращает локальное значение переменной
path-separator. То есть";"для систем MS и локальнуюdefault-directory, и":"для Unix и GNU систем, или удалённуюdefault-directory.
- Функция: parse-colon-path path
-
Эта функция принимает строку пути поиска, например, значение переменной среды
PATH, и разбивает ее по разделителям, возвращая список каталогов.nilв этом списке означает текущую директорию. Несмотря на то, что имя функции говорит о «двоеточии», она фактически использует значение переменной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
Эта функция возвращает идентификатор процесса (PID) процесса Emacs в виде целого числа.
- Переменная: tty-erase-char
Эта переменная содержит символ стирания, выбранный в драйвере терминала системы перед запуском Emacs.
- Переменная: null-device
Эта переменная содержит системное устройство «null». Ее значение —
"/dev/null"для Unix и GNU систем, и"NUL"для систем MS.
- Функция: null-device
Эта функция возвращает локальное значение переменной
null-device. То есть"NUL"для систем MS и локальнуюdefault-directory, и"/dev/null"для Unix и GNU систем, или удалённуюdefault-directory.
Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/System-Environment.html