Встроенный тип Set
Этот встроенный тип настолько сложен, что заслуживает отдельного раздела. set позволяет изменять значения параметров оболочки и устанавливать позиционные параметры, или отображать имена и значения переменных оболочки.
set
-
set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [argument …] set [+abefhkmnptuvxBCEHPT] [+o option-name] [--] [-] [argument …]
Если не заданы параметры или аргументы,
setотображает имена и значения всех переменных и функций оболочки, отсортированные в соответствии с текущим языковым стандартом, в формате, который можно повторно использовать в качестве входных данных для установки или сброса текущих переменных. Только для чтения переменные не могут быть сброшены. В режиме POSIX отображаются только переменные оболочки.Когда заданы параметры, они устанавливают или сбрасывают атрибуты оболочки. Параметры, если указаны, имеют следующие значения:
-a-
Каждая переменная или функция, которая создается или изменяется, получает атрибут экспорта и помечается для экспорта в среду последующих команд.
-b-
Приводят к немедленному сообщению о статусе завершенных фоновых задач, а не перед выводом следующего первичного приглашения.
-e-
Выйти немедленно, если конвейер (см. Конвейеры), который может состоять из одной простой команды (см. Простые команды), списка (см. Списки команд) или составной команды (см. Составные команды), возвращает ненулевой статус. Оболочка не завершает работу, если команда, которая завершается ошибкой, является частью списка команд, непосредственно следующего за ключевым словом
whileилиuntil, частью теста в оператореif, частью любой команды, выполненной в списке&&или||за исключением команды, следующей за конечным ключевым словом&&или||, любой командой в конвейере, кроме последней, или если статус возврата команды инвертируется с помощью!. Если составная команда, отличная от подоболочки, возвращает ненулевой статус из-за ошибки команды, в то время как -e игнорировался, оболочка не завершается. Ловушка наERR, если она установлена, выполняется перед завершением оболочки.Этот параметр применяется к среде оболочки и каждой среде подоболочки (см. Среда выполнения команды) и может привести к завершению подоболочек до выполнения всех команд в подоболочке.
Если составная команда или функция оболочки выполняется в контексте, где -e игнорируется, ни одна из команд, выполненных внутри составной команды или функции, не повлияет на настройку -e, даже если -e установлен, а команда возвращает статус ошибки. Если составная команда или функция оболочки устанавливает -e при выполнении в контексте, где -e игнорируется, эта настройка не повлияет до завершения составной команды или команды, содержащей вызов функции.
-f-
Отключить расширение имён файлов (globbing).
-h-
Найти и запомнить (кешировать) команды по мере их поиска для выполнения. Этот параметр включен по умолчанию.
-k-
Все аргументы в виде операторов присваивания помещаются в среду команды, а не только те, что предшествуют имени команды.
-m-
Управление задачами включено (см. Управление задачами). Все процессы выполняются в отдельной группе процессов. Когда фоновая задача завершается, оболочка выводит строку, содержащую её код выхода.
-n-
Считывать команды, но не выполнять их. Это можно использовать для проверки скрипта на наличие синтаксических ошибок. Этот параметр игнорируется интерактивными оболочками.
-o option-name-
Установить параметр, соответствующий option-name:
allexport-
То же, что и
-a. braceexpand-
То же, что и
-B. emacs-
Использовать интерфейс редактирования строк
emacs-стиля (см. Редактирование командной строки). Это также влияет на интерфейс редактирования, используемый дляread -e. errexit-
То же, что и
-e. errtrace-
То же, что и
-E. functrace-
То же, что и
-T. hashall-
То же, что и
-h. histexpand-
То же, что и
-H. history-
Включить историю команд, как описано в Возможностях истории Bash. Этот параметр включен по умолчанию в интерактивных оболочках.
ignoreeof-
Интерактивная оболочка не будет завершаться при чтении EOF.
keyword-
То же, что и
-k. monitor-
То же, что и
-m. noclobber-
То же, что и
-C. noexec-
То же, что и
-n. noglob-
То же, что и
-f. nolog-
В настоящее время игнорируется.
notify-
То же, что и
-b. nounset-
То же, что и
-u. onecmd-
То же, что и
-t. physical-
То же, что и
-P. pipefail-
Если установлен, значение конвейера — это значение последней (самой правой) команды, завершившейся с ненулевым статусом, или ноль, если все команды в конвейере завершились успешно. Этот параметр отключён по умолчанию.
posix-
Изменение поведения Bash, где стандартное действие отличается от стандарта POSIX, чтобы соответствовать стандарту (см. Режим Bash POSIX). Это предназначено для того, чтобы Bash действовал как строгое надмножество этого стандарта.
privileged-
То же, что и
-p. verbose-
То же, что и
-v. vi-
Использовать интерфейс редактирования строк
vi-стиля. Это также влияет на интерфейс редактирования, используемый дляread -e. xtraceТо же, что и
-x.
-p-
Включить привилегированный режим. В этом режиме файлы
$BASH_ENVи$ENVне обрабатываются, функции оболочки не наследуются из среды, и переменныеSHELLOPTS,BASHOPTS,CDPATHиGLOBIGNORE, если они появляются в среде, игнорируются. Если оболочка запускается с эффективным идентификатором пользователя (группы) отличным от реального идентификатора пользователя (группы), и параметр -p не задан, эти действия выполняются, а эффективный идентификатор пользователя устанавливается в реальный идентификатор пользователя. Если параметр -p задан при запуске, эффективный идентификатор пользователя не сбрасывается. Отключение этого параметра приводит к установке эффективных идентификаторов пользователя и группы в реальные идентификаторы пользователя и группы. -r-
Включить ограниченный режим оболочки. Этот параметр не может быть сброшен после его установки.
-t-
Выйти после чтения и выполнения одной команды.
-u-
Обрабатывать не заданные переменные и параметры, отличные от специальных параметров ‘@’ или ‘*’, или массивов переменных, индексированных с помощью ‘@’ или ‘*’, как ошибку при выполнении расширения параметров. Сообщение об ошибке будет выведено в стандартный вывод ошибок, а неинтерактивная оболочка завершит работу.
-v-
Выводить строки ввода оболочки по мере их чтения.
-x-
Выводить отслеживание простых команд,
forкоманд,caseкоманд,selectкоманд и арифметическихforкоманд и их аргументов или связанных списков слов после их расширения и перед выполнением. Значение переменнойPS4расширяется и полученное значение выводится перед командой и её расширенными аргументами. -B-
Оболочка выполнит расширение фигурных скобок (см. Расширение фигурных скобок). Этот параметр включен по умолчанию.
-C-
Предотвратить перенаправление вывода с помощью ‘>’, ‘>&’, и ‘<>’ от перезаписи существующих файлов.
-E-
Если установлен, любая ловушка на
ERRнаследуется функциями оболочки, заменами команд и командами, выполняемыми в среде подоболочки. ЛовушкаERRобычно не наследуется в таких случаях. -H-
Включить подстановку истории в стиле ‘!’ (см. Взаимодействие с историей). Этот параметр включен по умолчанию для интерактивных оболочек.
-P-
Если установлен, не разрешать символические ссылки при выполнении команд, таких как
cd, которые изменяют текущую директорию. Используется физический каталог вместо него. По умолчанию Bash следует логической цепочке каталогов при выполнении команд, которые изменяют текущую директорию.Например, если /usr/sys — символическая ссылка на /usr/local/sys, то:
$ cd /usr/sys; echo $PWD /usr/sys $ cd ..; pwd /usr
Если
set -Pвключён, то:$ cd /usr/sys; echo $PWD /usr/local/sys $ cd ..; pwd /usr/local
-T-
Если установлен, любые ловушки на
DEBUGиRETURNнаследуются функциями оболочки, заменами команд и командами, выполняемыми в среде подоболочки. ЛовушкиDEBUGиRETURNобычно не наследуются в таких случаях. ---
Если после этого параметра нет аргументов, позиционные параметры сбрасываются. В противном случае позиционные параметры устанавливаются в аргументы, даже если некоторые из них начинаются с ‘-’.
-Сигнализировать об окончании параметров, назначить все оставшиеся аргументы позиционным параметрам. Параметры -x и -v выключаются. Если аргументов нет, позиционные параметры остаются неизменными.
Использование ‘+’ вместо ‘-’ приводит к отключению этих параметров. Параметры также могут быть использованы при вызове оболочки. Текущий набор параметров можно найти в
$-.Остальные N аргументов являются позиционными параметрами и присваиваются, в порядке следования,
$1,$2, …$N. Специальный параметр#устанавливается в N.
Статус возврата всегда равен нулю, если не задан недопустимый параметр.
Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
Licensed under the GNU Free Documentation License.
https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html