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.

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

Spec-Zone.ru

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