Bash - командный интерпретатор GNU Bourne


Переменные командного интерпретатора


Командный интерпретатор устанавливает следующие переменные:

PPIDИдентификатор родительского процесса для командного интерпретатора. Эта переменная доступна только для чтения.
PWDТекущий рабочий каталог, установленный с помощью команды .
OLDPWDПредыдущий рабочий каталог, который был установлен с помощью команды .
REPLYУстанавливается равной значению, прочитанному встроенной командой , при вызове ее без аргументов.
UIDИдентификатор текущего пользователя - устанавливается при запуске командного интерпретатора. Эта переменная доступна только для чтения.
EUIDЭффективный идентификатор текущего пользователя - устанавливается при запуске командного интерпретатора. Эта переменная доступна только для чтения.
GROUPSПеременная-массив, содержащая список групп, в которые входит текущий пользователь. Эта переменная доступна только для чтения.
BASHПолное имя файла, использованное для вызова данного экземпляра bash.
BASH_VERSIONСтрока, описывающая версию данного экземпляра bash.
BASH_VERSINFOДоступный только для чтения массив, элементы которого содержат информацию о версии для данного экземпляра bash. Элементы массива имеют следующие значения:



BASH_VERSINFO[0]Главный номер версии (релиз).
BASH_VERSINFO[1]Второстепенный номер версии (версия).
BASH_VERSINFO[2] Уровень исправлений.
BASH_VERSINFO[3]Версия сборки.
BASH_VERSINFO[4]Статус релиза (например, beta1).
BASH_VERSINFO[5]Значение переменной MACHTYPE.

SHLVLУвеличивается на 1 при каждом запуске порожденного интерпретатора bash. RANDOMПри каждом обращении к этому параметру генерируется случайное число от 0 до 32767. Конкретная последовательность случайных чисел может быть проинициализирована путем присваивания значения переменной RANDOM. Если переменная RANDOM удаляется с помощью , она теряет свои специальные свойства, даже если в дальнейшем переустанавливается. SECONDSПри каждом обращении к этому параметру возвращается количество секунд, прошедших с момента вызова данного командного интерпретатора. Если переменной SECONDS присваивается значение, при последующем обращении будет получено количество секунд, прошедшее с момента присваивания, плюс присвоенное значение. Если переменная SECONDS удаляется с помощью , она теряет свои специальные свойства, даже если в дальнейшем переустанавливается.
LINENO При каждом обращении к этому параметру командный интерпретатор подставляет десятичное число, представляющее порядковый номер текущей строки (начиная с 1) в сценарии или функции. При вызове не из сценария или функции, не гарантируется подстановка осмысленного значения. Если переменная LINENO удаляется с помощью , она теряет свои специальные свойства, даже если в дальнейшем переустанавливается.
HISTCMD Исторический номер команды, или индекс текущей команды в списке выполненных команд. Если переменная HISTCMD удаляется с помощью , она теряет свои специальные свойства, даже если в дальнейшем переустанавливается.
DIRSTACK Переменная-массив (см. раздел "" далее), в которой хранится текущее содержимое стека каталогов. Каталоги находятся в стеке в том же порядке, в котором выдаются встроенной командой . Путем присваивания элементам этого массива можно изменять каталоги, уже находящиеся в стеке, но для добавления и удаления каталогов надо использовать встроенные команды и . Присваивание значения этой переменной не меняет текущий каталог. Если переменная DIRSTACK удаляется с помощью , она теряет свои специальные свойства, даже если в дальнейшем переустанавливается.
PIPESTATUS Переменная-массив (см. раздел "" далее), содержащая список значений статусов выхода процессов в последнем выполненном в приоритетном режиме конвейере (который может состоять и всего из одной команды).
OPTARG Значение последнего аргумента-опции, обработанного встроенной командной (см. раздел "" ниже).
OPTIND Индекс следующего аргумента, который должен быть обработан встроенной командой (см. раздел "" ниже).
HOSTNAME Автоматически устанавливается равной имени текущего хоста.
HOSTTYPE Автоматически устанавливается равной строке, уникально описывающей тип машины, на которой выполняется bash. Стандартное значение зависит от системы.
OSTYPE Автоматически устанавливается равной строке, описывающей операционную систему, на которой выполняется командный интерпретатор bash. Стандартное значение зависит от системы.

MACHTYPE Автоматически устанавливается равной строке, полностью описывающей тип системы, на которой выполняется bash, в стандартном для GNU формате процессор-компания-система. Стандартное значение зависит от системы. SHELLOPTS Список установленных опций командного интерпретатора через двоеточие. Каждое слово в списке - допустимый аргумент для опции -o встроенной команды (см. раздел "" ниже). Опции, упоминающиеся в списке SHELLOPTS, совпадают с выдаваемыми как установленные командой . Если эта переменная экспортирована в среду при запуске командного интерпретатора bash, все упомянутые в списке опции будут установлены до чтения любых файлов начального запуска. Эта перменная доступна только для чтения. Следующие переменные используются командным интерпретатором. В некоторых случаях bash присваивает переменным стандартные значения; эти случаи указаны ниже.

IFS Внутренний разделитель полей (Internal Field Separator), используемый для выделения слов после всех подстановок и для разбиения на слова строк, прочитанных с помощью встроенной команды . Стандартное значение - "".
PATH Путь поиска команд. Это список каталогов через двоеточие, в которых командный интерпретатор ищет команды (см. раздел "" ниже). Стандартный путь поиска зависит от системы и задается администратором, устанавливающим bash. Типичное значение: "/usr/gnu/bin :/usr/local/bin
:/usr/ucb:/bin:/usr/bin:.".
HOME Начальный каталог текущего пользователя; стандартный аргумент для встроенной команды . Значение этой переменной также используется при замене тильды.
CDPATH Путь поиска для команды . Это список каталогов через двоеточие, в которых командный интерпретатор ищет целевые каталоги, указанные по имени в команде . Пример возможного значения - ".:~:/usr".
BASH_ENV Если этот параметр установлен при выполнении командным интерпретатором bash сценария, его значение интерпретируется как имя файла, содержащего команды инициализации интерпретатора, аналогично ~/.bashrc. В значении BASH_ENV перед интерпретацией выполняется подстановка значений параметров, подстановка результатов выполнения команд и арифметические вычисления. Переменная PATH не используется для поиска результирующего имени файла.
MAIL Если этот параметр установлен равным имени файла и не установлена переменная MAILPATH, bash информирует пользователя о получении электронной почты в указанный файл.
MAILCHECK Задает частоту проверки (в секундах) электронной почты командным интерпретатором bash. Стандартное значение - 60 секунд. Когда приходит время проверять наличие новой почты, командный интерпретатор делает это перед выдачей первичного приглашения. Если эта переменная не установлена, проверка почты командным интерпретатором отключается.

MAILPATH Список имен файлов через двоеточие, в которых нужно проверять наличие новых почтовых сообщений. Можно задавать сообщение, которое должно выдаваться при поступлении почты в конкретный файл, отделяя сообщение от имени файла вопросительным знаком (?). В тексте этого сообщения метасимвол $_ заменяется именем текущего файла почты. Например:

MAILPATH='/usr/spool/mail/bfox?"You have mail"
:~/shell-mail?"$_ has mail!"'

Командный интерпретатор bash поддерживает стандартное значение для этой переменной, но используемое при этом местонахождение файлов почты пользователя зависит от системы (например, /usr/spool/mail/$USER).

PS1 Значение этого параметра обрабатывается (см. раздел "" ниже) и используется для установки строки первичного приглашения. Стандартное значение - "\s-\v\$ ".
PS2 Значение этого параметра обрабатывается, как и PS1, и используется для установки строки вторичного приглашения. Стандартное значение - "> ".
PS3 Значение этого параметра используется в качестве приглашения для команды (см. раздел "" выше).
PS4 Значение этого параметра обрабатывается, как и PS1, и выдается перед каждой командой, показываемой интерпретатором bash в ходе трассировки выполнения. Первый символ PS4

повторяется необходимое количество раз, показывая уровень вложенности. Стандартное значение - "+".
TIMEFORMAT Значение этого параметра используется в качестве строки, задающей формат выдачи информации о времени выполнения для конвейеров, перед которыми задано зарезервированное слово time. Символ % начинает управляющую последовательность, заменяемую значением времени или другой информацией. Управляющие последовательности имеют следующие значения (в квадратных скобках представлены необязательные части):
<


%% Символ %.
%[p][l]R Время выполнения, в секундах.
%[p][l]U Количество секунд работы процессора в пользовательском режиме.
%[p][l]S Количество секунд работы процессора в системном режиме.
%P Процент использования процессора, вычисляемый как (%U + %S) / %R.
Необязательный параметр p - это цифра, задающая точность, количество знаков (долей секунды) после запятой. Значение 0 отменяет выдачу долей секунды. Максимальная точность - три знака после запятой; значения p больше 3 заменяются на 3. Если p не задано, используется значение 3.

Необязательный параметр l задает длинный формат, включая минуты, в виде MMmSS.FFs. Значение праметра p определяет, включаются доли секунды или нет.

Если эта переменная не установлена, bash действует так, как если бы она имела значение $'\nreal\t%3lR\nuser\t%3lU\nsys%3lS'. Если установлено пустое значение, информация о времени выполнения не выдается. При выводе строки по формату добавляется перевод строки.

HISTSIZE Количество команд, которые необходимо запоминать в списке истории (см. раздел "ИСТОРИЯ КОМАНД" ниже). Стандартное значение - 500. HISTFILE Имя файла, в котором сохраняется история команд (см. раздел "" ниже). Стандартное значение - ~/.bash_history. Если эта переменная не установлена, история команд не сохраняется при завершении работы интерактивного командного интерпретатора. HISTFILESIZE Максимальное количество строк, содержащееся в файле истории. Если этой переменной присвоено значение, файл истории, при необходимости, усекается, и будет содержать не больше, чем указанное количество строк. Стандартное значение - 500. Файл истории также усекается до этого размера после записи при выходе из интерактивного командного интерпретатора. OPTERR Если имеет значение 1, bash показывает сообщения об ошибках, выдаваемые встроенной командой (см. раздел "" ниже). Переменная OPTERR инициализируется значением 1 при каждом вызове командного интерпретатора или выполнении сценария. LANG Используется для определения локали для всех категорий, не заданных явно с помощью переменной, имя которой начинается с LC_.
LC_ALL Эта переменная переопределяет значение переменной LANG и всех остальных переменных LC_, задающих категорию локали.
LC_COLLATE Эта переменная задает порядок сортировки, используемый при сортировке полученных по шаблону имен файлов, и определяет интерпретацию диапазонов, классов эквивалентостей и правила сравнения символов для подстановки имен файлов и сопоставления с образцом.
LC_CTYPE Эта переменная определяет интерпретацию символов и принадлежность символов к определенному классу для подстановки имен файлов и сопоставления с образцом.
LC_MESSAGES Эта переменная определяет локаль, используемую для обработки строк в двойных кавычках, перед которыми указан символ $.
PROMPT_COMMAND Если значение задано, оно выполняется как команда перед выдачей каждого первичного приглашения.
IGNOREEOF Управляет действием командного интерпретатора при получении символа конца файла (EOF) как единственного символа в строке. Если эта переменная установлена, ее значение интерпретируется как количество подряд идущих символов EOF, с которых должна начинаться строка, чтобы в результате работа командного интерпретатора bash завершилась. Если переменная существует, но не имеет числового значения или не имеет значения вообще, по умолчанию используется значение 10. Если эта переменная не существует, EOF означает конец входных данных для командного интерпретатора.
TMOUT Если установлено значение больше нуля, оно интерпретируется как количество секунд ожидания ввода после выдачи первичного приглашения. Командный интерпретатор bash завершает работу по истечении этого времени, если не введена команда.
FCEDIT Задает стандартный редактор для встроенной команды .
FIGNORE
Список суффиксов через двоеточие, которые необходимо игнорировать при завершении имен файлов (см. раздел "" ниже). Имя файла, суффикс которого совпадает с одним из указанных в FIGNORE


значений, исключается из списка соответствующих имен файлов. Пример значения - ".o:~".
GLOBIGNORE Список шаблонов через двоеточие, задающих набор имен файлов, которые надо игнорировать при подстановке имен. Если имя файла, соответствующее шаблону, также соответствует одному из шаблонов в GLOBIGNORE, оно удаляется из списка соответствующих.
INPUTRC Имя файла начального запуска readline, переопределяющего стандартные установки в файле ~/.inputrc (см. раздел "" ниже).
HISTCONTROL Если имеет значение ignorespace, строки, начинающиеся символом пробела, не попадают в список выполненных команд. Если имеет значение ignoredups, строки, совпадающие с последней выполненной командой, в список выполненных команд не попадают. Значение ignoreboth сочетает действие обеих представленных опций. Если переменной нет или она имеет какое-то другое значение, кроме перечисленных выше, все строки, прочитанные синтаксическим анализатором, сохраняются в списке истории, с учетом значения переменной HISTIGNORE. Действие этой переменной переопределяется переменной HISTIGNORE. Вторая и следующие строки многострочной составной команды не проверяются, и добавляются в список истории независимо от значения HISTCONTROL.
HISTIGNORE Список шаблонов через двоеточие, используемых для принятия решения о сохранении командных строк в списке истории. Каждый шаблон привязывается к началу строки и должен задавать всю строку ('*' неявно не добавляется). Каждый шаблон сравнивается со строкой после проверок, задаваемых переменной HISTCONTROL. Кроме обычных символов сопоставления с образцом в командном интерпретаторе, символ '&' сопоставляется с предыдущей строкой в списке истории. Символ '&' можно экранировать с помощью обратной косой. Перед сопоставлением обратная косая убирается. Вторая и последующая строки составной многострочной команды не проверяются и добавляются в список истории независимо от значения переменной HISTIGNORE.
histchars Два или три символа, управляющих подстановкой и разбиением на лексемы уже выполненных команд (см. раздел "" ниже). Первый символ - это символ подстановки из списка, который означает начало работы со списком истории. Обычно это символ '!'. Второй символ - это символ быстрой подстановки, используемый для быстрого повторения предыдущей введенной команды, с подстановкой указанной строки вместо другой, заданной в этой команде. По умолчанию используется символ '^'. Необязательный третий символ - это символ, указывающий, если является первым символом слова, что остаток строки - это комментарий. Обычно в этом качестве используется символ '#'. Символ комментария для списка истории приводит к отказу от подстановки из истории для оставшихся слов в командной строке. Он не обязательно приводит к обработке синтаксическим анализатором оставшейся части строки как комментария.
HOSTFILE Содержит имя файла того же формата, что и файл /etc/hosts, который будет читаться при необходимости подстановки имени хоста. Этот файл можно менять интерактивно; при следующей попытке подстановки имени хоста bash добавит содержимое нового файла к уже существующей базе данных.
auto_resume Эта переменная управляет взаимодействием командного интерпретатора с пользователем и средствами управления заданиями. Если она установлена, простые команды из одного слова и без перенаправлений рассматриваются как указатели возможного возобновления существующих остановленных заданий. Неоднозначность не допускается; если с введенной строки начинается более одного задания, выбирается последнее по времени приостановки задание. Имя остановленного задания, в этом контексте, - это командная строка, использовавшаяся для его запуска. Если эта переменная имеет значение exact, введенная строка должна точно совпадать с именем остановленного задания; Если же задано значение substring, введенная строка должна быть подстрокой имени остановленного задания. Это аналогично по возможностям идентификатору задания %? (см. раздел "" ниже). Если установлено любое другое значение, введенная строка должна быть префиксом имени остановленного задания; это аналогично по возможностям идентификатору задания %.
Содержание раздела