Переменные shell

Следующие переменные уcтанавливаются в shell:

BASH — раскрывает полное имя файла, используемого для вызова данного экземпляра bash.

BASHOPTS — список включенных опций shell, разделенный двоеточиями. Каждое слово в списке, является значением аргумента для опции(параметра) -s, встроенных команд(Встроенные команды я буду описывать в дальнейшем). Опции(параметры) которые включаются в BASHOPTS это те, которые, сообщаются shopt. Если эта переменная находится в окружающей среде, при запуске Bash, каждая shell опция(параметр) в списке будет включена до чтения любых файлов автозапуска. Эта переменная доступна только лишь для чтения.

BASHPID — раскрывается в идентификатор(ID) текущего процесса bash. Это отличается от $$ при определенных обстоятельствах, например, для подоболочек, которые не требуют от Bash быть повторно инициализированными.

BASH_ALIASES — ассоциативный массив переменных, члены которого соответствуют внутреннему списку aliases(псевдонимов), содержащегося в встроенном alias. Элементы которые добавляются в этом массиве, появятся в списке alias; отключение массива элементов вызывают aliases, необходимые удалить из списка alias.

BASH_ARGC — переменная массива, значение которого является числовым параметром, в каждом кадре текущего выполняющегося bash. Число параметров текущей подпрограммы, находится в верхней части стека. Когда подпрограмма выполнена, число передаваемых параметров помещается в BASH_ARGC. Shell задает BASH_ARGC только лишь в расширенном режиме отладки(описание опции extdebug я буду описывать в дальнейшем).

BASH_ARGV — переменная массив, которая содержит все параметры находящиеся в текущем стеке выполняющегося bash. Последний параметр, последнего вызова подпрограммы находится в верхней части стека; первый параметр, первоначального вызова, находится в нижней части. Когда выполняется подпрограмма, поставляемые параметры помещаются в BASH_ARGV. Shell задает BASH_ARGV лишь в расширенном режима отладки.

BASH_CMDS — ассоциативный массив переменных, части которого соответствуют внутренней хеш-таблице команд, которая хранится во встроенных хеш. Элементы которые добавляются в этом массиве, появляются в хеш-таблице; отключение элементов массива вызывает команды, которые будут удалены из хеш-таблицы.

BASH_COMMAND — команда которая выполняется в данное время или будет выполнена, если shell не выполняет команду как результат из trap, то в этом случае команда выполняется во время trap.

BASH_EXECUTION_STRING — аргументы команды с опцией(параметром) вызова -c.

BASH_LINENO — переменная-массив, составляющие которых являются номерами строк в исходных файлах, где каждое соответствующее составляющее было вызвано FUNCNAME. ${BASH_LINENO[$i]} это номер строки в исходном файле(${BASH_SOURCE[$i+1]}) где ${FUNCNAME[$i]} было названо(или ${BASH_LINENO[$i-1]} если ссылаются на другую shell функцию). Используя LINENO получим номер текущей строки.

BASH_REMATCH — переменная-массив, составляющие которого назначаются бинарным оператором «=~» в условный оператор [[. Элемент с индексом 0 есть частью строки соответствующей всему регулярному выражению. Элемент с индексом n является частью строки, соответствующей n скобке подвыражения. Данная переменная доступна лишь для чтения.

BASH_SOURCE — переменная-массив, составляющими которого являются источником имен файлов, где соответствующие shell функции имен определяются в переменной массива FUNCNAME. Shell функция ${FUNCNAME[$i]} определяется в файле ${BASH_SOURCE[$i]} и вызывается из ${BASH_SOURCE[$i+1]}.

BASH_SUBSHELL — Увеличивается на единицу каждый раз, когда окрудающая среда или подоболочка, порождает подоболочку. Начальное значение равно нулю.

BASH_VERSINFO — Массив переменной только для чтения, составляющие которого содержат информацию о версии для данного экземпляра bash. Следующие значения присваиваются составляющим массива.

BASH_VERSINFO [0] основной номер версии.

BASH_VERSINFO [1] Дополнительный номер версии.

BASH_VERSINFO [2] Уровень патча.

BASH_VERSINFO [3] версии сборки.

BASH_VERSINFO [4] Статус версии(например, beta1).

BASH_VERSINFO [5] Значение MACHTYPE.

BASH_VERSION — Выводится в строку с описанием версии данного экземпляра bash.

COMP_CWORD — Индекс в ${COMP_WORDS} слова содержащие текущую позицию курсора. Эта переменная доступна только в shell функции вызывающегося при помощи программируемых объектов завершения.

COMP_KEY — Ключ (или последний ключ последовательности ключей) используется для вызова текущей функции завершения.

COMP_LINE — Текущая командная строка. Эта переменная доступна только в shell функциях и внешних командах вызывающихся программируемыми объектами завершения.

COMP_POINT — Индекс текущего положения курсора, относительно начала текущей команды. Если текущее положение курсора, находится в конце текущей команды, значение этой переменной равно ${#COMP_LINE}. Эта переменная доступна только в shell функции и внешних командах вызываемых программируемыми объектами завершения.

COMP_TYPE — Установить целочисленное значение, соответствующее типу попытки завершения, которая вызвала функцию завершения называющуюся: «TAB» для нормального завершения, «?» для добавления в список пополнений после целого ряда вкладок, «!» для добавления в список альнернатив на частичное завершение слов, «@» дополнение к списку, если слово не изменялось или «%» для меню завершения. Эта переменная доступна только в shell функции и внешних командах вызываемых программируемыми объектами завершения.

COMP_WORDBREAKS — Набор символов библиотеки readline рассматриваемые как разделители слов при выполнении слова завершения. Если COMP_WORDBREAKS не установлена, она теряет свои специальные свойства, даже если в дальнейшем переустанавливается.

COMP_WORDS — Переменная-массив, состоящая из отдельных слов в текущей командной строке. Строка делится на слова, как если бы использовалось readline, смотрите использование COMP_WORDBREAKS описанное выше. Эта переменная доступна только в shell функции вызывающейся при помощи программируемого завершения объектов.

COPROC — переменная массива создающаяся для хранения файловых дескрипторов для вывода со входа и неназванного coprocess(Coprocesses я описывал в одной из прошлых статей).

DIRSTACK — переменная-массив, содержащий текущее содержимое стека каталога(описание массивов будет ниже). Каталоги появляются в стеке в том порядке, как они отображаются на встроенных каталогах. Назначение составляющих этого массива могут быть использованы для изменения директорий уже в стеке, но pushd и popd, должны использоваться для добавления и удаления директорий. Аргументы этой переменной не изменяют текущий каталог. Если DIRSTACK не установлена, он теряет свои специальные свойства, даже если в дальнейшем переустанавливается.

EUID — Раскрывается в эффективный идентификатор пользователя ID, текущего пользователя, инициализиуется при запуске shell. Эта переменная доступна лишь для чтения.

FUNCNAME — Переменная-массив, содержащая имена всех shell функций, в настояшее время выполняющейся в стеке вызовов. Элемент с индексом 0, это имя любой, выполняющейся на данный момент shell функции. Самый нижний элемент(с наивысшим индексом) является главным «main«. Эта переменная существует только тогда, когда shell выполняет функцию. Присвоения FUNCNAME не имеют эффекта и возвращают статус ошибки. Если FUNCNAME не установлена, она теряет свои специальные свойства, даже если в дальнейшем переустанавливается.

Эта переменная может быть использована с BASH_LINENO и BASH_SOURCE. Каждый элемент имеет FUNCNAME соответствующих элементов в BASH_LINENO и BASH_SOURCE для описания стека вызовов. Так например ${FUNCNAME[$i]} был вызван из файла ${BASH_SOURCE[$i+1]} в строке номер ${BASH_LINENO[$i]}. Вызывающий встроенные отображения текущего стека вызовов с использованием этой информации.

GROUPS — Переменная-массив, содержащая список групп, в которых текущий пользователь является членом. Присвоения GROUPS не имеют никакого эффекта и возвращают статус ошибки. Если GROUPS не установлен, он теряет специальные свойства, даже в том случае если в дальнейшем переустанавливается.

HISTCMD — Номер или индекс в списке истории текущей команды. Если HISTCMD не установлен, он теряет специальные свойства, даже в том случае если в дальнейшем переустанавливается.

HOSTNAME — Автоматически устанавливается на имя текущего хоста.

HOSTTYPE — Автоматически устанавливается на строку, которая, описывает тип машины, на которой выполняется bash. По умолчанию, значение, зависит от системы.

LINENO — Каждый раз при обращении к этому параметру, оболочка заменяет десятичное число, представляющее текущий порядковый номер строки(начиная с 1) в сценарии, либо функции. Когда подставляется не в скрипте или функции, смысл не гарантируется. Если LINENO не установлен, он теряет специальные свойства, даже в том случае если в дальнейшем переустанавливается.

MACHTYPE — Автоматически устанавливается на строку, которая полностью описывает тип системы на которой выполняется bash в стандартном формате GNU. Значение по умолчанию зависит от системы.

MAPFILE — Переменная-массив, создается для сохранения текста чтения встроенного файла проекта, когда имя переменной не подается.

OLDPWD — Предыдущий рабочий каталог, установленный командой «cd».

OPTARG — Значение последнего аргумента опций, обработанного встроенной командой getopts.

OPTIND — Индекс следующего аргумента для обработки встроенной командой getopts.

OSTYPE — Автоматически устанавливается на строку, которая описывает операционную систему на которой выполняется bash. Значение по умолчанию зависит от системы.

PIPESTATUS — Переменная-массив, содержащая список значений статуса выхода из поцессов в недавно выполненных командах перенаправлений.

PPID — Идентификатор процесса «ID» родительской shell оболочки. Данная переменная доступна лишь для чтения.

PWD — Текущий рабочий каталог, установленный командой «cd».

RANDOM — Каждый раз, при обращении к этому параметру, генерируется случайное целое число от 0 до 32767. Последовательность случайных чисел, можно инициализировать путем присвоения значения RANDOM. Если RANDOM не установлен, он теряет специальные свойства, даже в том случае если в дальнейшем переустанавливается.

READLINE_LINE — Содержимое линии буфера обмена readline, для использования с «bind -x«.

READLINE_POINT — Положение курсора в буфере линии readline, для использования с «bind -x«.

REPLY — Установленное в строке ввода считывается с помощью встроенной команды read, когда аргументы не поставляются.

SECONDS — Каждый раз при обращении к этому параметру, количество секунд с shell оболочкой возвращается. Если присваивается значение SECONDS, то при последующих ссылках возвращается количество секунд прошедших с назначения плюс присвоенное значение. Если SECONDS не установлен, он теряет специальные свойства, даже в том случае если в дальнейшем переустанавливается.

SHELLOPTS — Разделенный двоеточиями список включенных вариантов shell оболочки. Каждое слово в списке является значением аргумента для опции «-o» встроенного набора команд. Опции появляющиеся в SHELLOPTS, те которые сообщаются в наборе -o. Если эта переменная находится в окружающей среде при запуске bash, каждая shell опция в списке будет включена до чтения файлов автозапуска. Эта переменная предназначена только для чтения.

SHLVL — Увеличивается на единицу каждый раз при запуске экземпляра bash.

UID — Раскрывается в идентификатор текущего пользователя ID, инициализируется при запуске командного интерпритатора shell. Эта переменная доступна только для чтения.

Следующие переменные используются shell. В некоторых случаях bash использует значения переменной по умолчанию, ниже я перечислю эти случаи.

BASH_ENV — Если установлен этот параметр установлен когда bash выполняет скрипт, его значение интерпретируется как имя файла содержащего команды инициализации shell, как в «~/.bashrc». Значение BASH_ENV подвергают расширению параметры расширения, подстановки команд и арифметические расширения интерпретируются как имя файла. PATH (путь) не используется для поиска полученного имени файла.

BASH_XTRACEFD — Если значение установлено, целое число, соответствующее допустимому дескриптору файла, bash будет писать вывод трассировки генерирующийся когда установлен -x включенный в этот дескриптор файла. Файловый дескриптор закрыт, когда BASH_XTRACEFD не установлен или назначается новое значение. Отключение BASH_XTRACEFD или присвоение ей пустой строки вызывает трассировки для отправки стандартной ошибки. Отметим что установка BASH_XTRACEFD до 2, а затем снятие приведет к стандартной ошибке закрытия.

CDPATH — Путь поиска команды «cd». Это разделенный двоеточиями список каталогов, в который shell ищет назначения каталогов, указанных в команде «cd». Образец значения «.:~:/usr«.

COLUMNS — Используется команда выбора объединения команд для определения ширины терминала при печати списков выбора. Автоматически устанавливается после получения SIGWINCH.

COMPREPLY — Переменная-массив, из которого bash читает возможные завершения порожденных shell функций, вызывается при помощи программируемого объекта завершения.

EMACS — Если в bash такая переменная существует в окружающей среде, когда оболочка shell запускается со значением «t», это предполагает что shell работает в буфере Emacs shell и отключает линию редактирования.

ENV — Подобно BASH_ENV; используется, когда оболочка вызывается в режиме POSIX.

FCEDIT — Редактор по умолчанию для встроенной командой «fc».

FIGNORE — Разделенный двоеточиями список суффиксов, игнорируемых при завершении имени файла. Имя файла которому соответствует одной из записей в FIGNORE исключается из списка соответствующих имен файлов. Образец значения «.o:~»

FUNCNEST — Если задано числовое значение больше 0, определяет максимальный уровень вложенности функций. Вызовы функций которые превышают этот уровень вложенности приведет к отмене текущей команды.

GLOBIGNORE — Разделенный двоеточиями список шаблонов, определяющих набор имен файлов, которые будут игнорироваться в пути расширения. Если имя файла соответствует тому шаблону, расширения пути также соответствует одному из шаблонов в GLOBIGNORE он удаляется из списка соответствий.

HISTCONTROL — Разделенный двоеточиями список значений управления тем как сохраняются команды в списке истории. Если список значений включает ignorespace, строки начинающиеся с пробела не сохраняются в списке истории. Значение ignoredups указывает строчке совпадающей с предыдущей записью не сохранятся в историю. Значение ignoreboth это сокращение для ignorespace и ignoredups. Значение erasedups указывает всем предыдущим строкам, похожим на текущую строку быть удаленными из истории перед сохранением этой строки. Любое значение не приведенное выше в списке игнорируется. Если HISTCONTROL не установлено или не включает в себя действительное значение, все линии читаемые анализатором командного интерпритатора сохраняются в списке истории с учетом значения HISTIGNORE. Вторая и последующие строки многострочной составной команды не проверяются, и добавляются к истории независимо от значения HISTCONTROL.

HISTFILE — Имя файла в котором сохраняется история команд. Значение по умолчанию: «~/.bash_history». Если файл не установлен история команд не сохраняется при выходе интерактивной оболочки.

HISTFILESIZE — Максимальное количество строк, содержащихся в файле истории. Когда этой переменной присваивается значение, файл истории обрезается по необходимости, удаляя старые записи которые содержат большее число чем число линий. По умолчанию это значение равно 500. Файл истории также обрезается до этого размера после его записи, при выходе из интерактивной оболочки shell.

HISTIGNORE — Разделенный двоеточиями список шаблонов, используется для определения, линий команд которые должны быть сохранены в списке истории. Каждый шаблон закреплен в начале линии и должен соответствовать полной линии(не явные «*» не добавляются). Каждый шаблон проверяется на линии, после проверки, указанные HISTCONTROL применяются. В дополнение к обычному shell шаблону соответствия символов, ‘&‘ соответствует предыдущей строке истории. ‘&‘ может быть экранирован при помощи обратной косой черты; обратная косая черта удаляется перед совпадением. Вторая и последующая строки многострочной команды не проверяются и добавляются к истории, независимо от значения HISTIGNORE.

HISTSIZE — Количество команд которые помнит история команд. По умолчанию значение равно 500.

HISTTIMEFORMAT — Если эта переменная задана и не является пустой, то её значение используется в качестве формата строки для strftime(3), для распечатки отметки времени, связанной с каждой записью журнала отображающейся во встроенной истории. Если эта переменная установлена, отметки времени, записываются в файл истории, поэтому они могут сохранятся в течение всех сессий оболочки. При этом используется символ комментария, отличающий временные метки из других линий истории.

HOME — Домашний каталог текущего пользователя, по умолчанию являющийся аргументом для встроенной команды «cd». Значение этой переменной, также используется при выполнении тильды «~».

HOSTFILE — Содержит имя файла в том же формате /etc/hosts что оболочке необходимо читать при завершении имени хоста. Перечень возможных дополнений имени хоста может быть изменен во время работы shell; в следующий раз имя хоста завершения выполняется после изменения значения, bash добавит содержимое нового файла к существующему списку. Если HOSTFILE установлен, но не имеет никакого значения, или не называет читаемый файл bash пытается читать /etc/hosts для получения списка возможных дополнений имени хоста. Когда HOSTFILE не установлен, имя хоста очищается из списка.

IFS — Внутренний разделитель полей, который используется для разбиения на слова после расширения и разделения строки на слова, с помощью встроенной команды чтения. Значение по умолчанию »».

IGNOREEOF — Контролирует работу интерактивной оболочки по получении символа EOF в качестве единственного входного. Если установлено значение числа последовательных символов EOF, которые должны быть набраны как первые символы строки ввода перед bash выходом. Если переменная существует, но не имеет числового значения, значение по умолчанию равно 10. Если он не существует, EOF означает конец вывода в оболочку.

INPUTRC — Имя файла для запуска readline, заменяемое значение по умолчанию «~/.inputrc».

LANG — Используется для определения локальной категории, для любой категории не специально отобранной с переменной запускаемой с «LC_».

LC_ALL — Эта переменная перекрывает значение LANG и любой иной переменной «LC_» указывающую локальную категорию.

LC_COLLATE — Эта переменная определяет порядок сортировки использующийся при сортировке результатов имен файлов, и определяет поведение диапазона выражений, классы эквивалентности, и последовательности сортировки в пути и шаблона соответствия.

LC_CTYPE — Эта переменная определяет интерпретацию символов и поведение символов по пути расширения, и сопоставления с шаблоном соответствия.

LC_MESSAGES — Эта переменная определяет язык использующийся для перевода строки в двойных кавычках предшествующих $.

LC_NUMERIC — Эта переменная определяет локальную категорию для форматирования чисел.

LINES — Используется команда выбора составных команд, для определения длины колонки для печати списков выбора. Автоматически устанавливается после получения SIGWINCH.

MAIL — Если этот параметр установлен в имя файла или каталога и переменная MAILPATH не задана, bash информирует пользователя о приходе почты в указанном файле или формате директории Maildir.

MAILCHECK — Указывает как часто bash проверяет почту, в секундах. По умолчанию 60 секунд. Когда приходит время проверки почты, shell делает это перед отображением первичного приглашения. Если эта переменная не установлена, или установлена на значение не являющееся числом большим или равным нулю, shell отключает проверку почты.

MAILPATH — Разделенный двоеточиями список имен файлов, что должны быть проверены на почту. Сообщение для печати при поступлении почты в конкретный файл может быть определено, отделяя имя файла из сообщения с ‘?‘. При использовании в тексте сообщения, ‘$ _‘ заменяется на имя текущего mailfile. Пример:

MAILPATH=’/var/mail/bfox?»You have mail»:~/shell-mail?»$_ has mail!»‘

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

OPTERR — Если установлено значение 1, bash отображает сообщения об ошибке создаваемые встроенной командой getopts. OPTERR инициализируется на 1 каждый раз при запуске shell или выполнении скрипта.

PATH — Путь поиска команд. Это разделенный двоеточиями список каталогов, в которых shell ищет команды. Нулевой длины (NULL) имя каталога в значение PATH указывает на текущий каталог. Нулевое имя каталога может выглядеть как два соседних двоеточия, или в качестве начального или конечного двоеточия. По умолчанию путь зависит от операционной системы и устанавливается администратором, который устанавливает bash. Общее значение »/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin».

POSIXLY_CORRECT — Если эта переменная находится в окружающей среде при запуске bash, оболочка входит в POSIX режим перед чтением файлов автозапуска, как будто были поставлены опции —posix. Если он был установлен во время работы оболочки, bash включает posix режим, как набор команд -o posix был выполнен.

PROMPT_COMMAND — Если установлено, значение выполняется как команда перед выдачей каждого первичного приглашения.

PROMPT_DIRTRIM — Если задано число больше нуля, значение используется как количество завершающих каталог компонентов. Удаленные символы заменяются многоточием.

PS1 — Значение этого параметра расширяется и используется в качестве основной строки приглашения. Значение по умолчанию »\s-\v\$ ».

PS2 — Значение этого параметра расширяется с PS1 и используется в качестве вспомогательного приглашения. По умолчанию »> ».

PS3 — Значение этого параметра используется в качестве приглашения для выбора команд.

PS4 — Значение этого параметра расширяется с PS1 и значение выводится перед каждой командой bash отображаемой в ходе трассировки. Первый символ PS4 повторяется нужное количество раз, показывая уровень вложенности. Значение по умолчанию «+«.

SHELL — Содержит полный путь к shell, этой переменной среды. Если этот параметр не установлен, при запуске оболочки, bash присваивает ей полное имя входа текущего пользователя.

TIMEFORMAT — Значение этого параметра используется в качестве формата строки описывающей информацию о времени выполнения для конвейеров, с префиксом зарезервированным словом time. Символ «%» представляет управляющую последовательность, которая расширяется до значения времени или другой информации. Управляющие последовательности имеют следующие значения, в квадратных скобках указаны необязательные параметры.

%% — Символ%.

%[p][l]R — Прошедшее время в секундах.

%[p][l]U — Количество секунд CPU в пользовательском режиме.

%[p][l]S — Количество секунд CPU в системном режиме.

%PCPU в процентах, вычисляется как (%U + %S) / %R.

Дополнительный, необязательный, парамет «p» определяет цифровую точность, количество дробных цифр после запятой. Значение 0 не вызывает десятичные отметки, не выводятся никакие долисекунды. После десятичной точки, значение не может быть определено более трех знаков, значение «p» более 3 изменяется на 3. Если «p» не указан, используется значение 3.

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

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

TMOUT — Если значение установлено выше нуля, TMOUT рассмотривается как время ожидания встроенное по умолчанию для чтения. Выбор команды завершает сессию, если вход не происходит через TMOUT секунд, если вход идет из терминала. В интерактивной оболочке, значение интерпретируется как количество секунд ожидания ввода, после первичного приглашения. Bash завершает свою работу, после ожидания в течении установленного количества секунд, если вход не происходит.

TMPDIR — Если установлена, bash использует это значение как имя директории, в которой bash создает временные файлы для использования shell оболочки.

auto_resume — Эта переменная управляет тем как shell взаимодействует с пользователем и контролирует работу. Если эта переменная установлена, простые односложные команды, без перенаправления, рассматриваются в качестве кандидатов на возобновление существующих остановленных заданий. Никакой двусмысленности не допускается, в том случае если есть более одного задания, выбирается задание которое останавливается последним по времени. В этом контексте, имя остановленного задания, это командная строка использовавшаяся для его запуска. Если значение переменной задано exact, то используемая строка должна точно совпадать с именем остановленного задания, Если установленное значение substring, строка должна соответствовать подстроке имени остановленного задания.

histchars — Два или три символа, которые управляют историей расширений и лексемы уже выполненных команд. Первым символом является символ расширения истории, символом который сигнализирует о начале расширения истории обычно «!». Вторым символом, является символ быстрой замены символов, используется как сокращение для повторного запуска предыдущей введенной команды, заменяя одну строку на другую в команде. По умолчанию «^». Необязательный третий символ, указывает что остальная часть строки является комментарием, когда найден первый символ слова, обычно это «#». Символ комментария истории, вызывает отказ замены истории для оставшихся слов в командной строке. Он не обязательно приводит к обработке синтаксическим анализатором, оставшейся части строки как комментария.

Переменные shell: 1 комментарий

  1. Бред… Так и не сказали где эти переменные определяются! а эта инфа нафик не надо… Любой дурак это знает! Говорите по сути, а не несите прописные истины…

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *