Spec-Zone.ru › Bash

Встроенная команда Set

Эта встроенная команда настолько сложна, что заслуживает отдельного раздела. set позволяет изменять значения параметров оболочки и задавать позиционные параметры либо отображать имена и значения переменных оболочки.

set
set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [argument ...]
set [+abefhkmnptuvxBCEHPT] [+o option-name] [--] [-] [argument ...]
set -o
set +o

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

Если указаны параметры, они устанавливают или снимают атрибуты оболочки. Любые аргументы, оставшиеся после обработки параметров, заменяют позиционные параметры.

Указанные параметры имеют следующие значения:

-a

Каждой созданной или изменённой переменной либо функции присваивается атрибут экспорта, и она помечается для передачи в окружение последующих команд.

-b

Заставляет немедленно сообщать о состоянии завершившихся фоновых заданий, а не перед выводом следующего основного приглашения или, при некоторых обстоятельствах, при завершении команды переднего плана. Действует только при включённом управлении заданиями.

-e

Немедленно завершает работу, если конвейер (см. раздел Конвейеры), который может состоять из одной простой команды (см. раздел Простые команды), списка (см. раздел Списки команд) или составной команды (см. раздел Составные команды), возвращает ненулевой статус. Оболочка не завершает работу, если команда, завершившаяся с ошибкой, является частью списка команд, непосредственно следующего за зарезервированным словом while или until, частью условия в операторе if, частью любой команды, выполненной в списке && или ||, кроме команды после последнего && или ||, любой командой конвейера, кроме последней (в зависимости от состояния параметра оболочки pipefail), либо если статус возврата команды инвертируется с помощью !. Если составная команда, отличная от подоболочки, возвращает ненулевой статус из-за сбоя команды в период игнорирования -e, оболочка не завершает работу. Если задан обработчик ERR, он выполняется перед завершением работы оболочки.

Этот параметр применяется отдельно к окружению оболочки и каждой подоболочки (см. раздел Среда выполнения команд) и может привести к завершению подоболочек до выполнения всех команд в них.

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

-f

Отключает раскрытие имён файлов (подстановку шаблонов).

-h

Находит команды и сохраняет их в хеш-таблице по мере поиска для выполнения. Этот параметр включён по умолчанию.

-k

Все аргументы в форме операторов присваивания помещаются в окружение команды, а не только те, которые указаны перед именем команды.

-m

Управление заданиями включено (см. раздел Управление заданиями). Все процессы запускаются в отдельных группах процессов. Когда фоновое задание завершается, оболочка выводит строку с его статусом завершения.

-n

Читает команды, но не выполняет их. Это можно использовать для проверки сценария на наличие синтаксических ошибок. Интерактивные оболочки игнорируют этот параметр.

-o option-name

Задаёт параметр, соответствующий option-name. Если -o указан без option-name, set выводит текущие настройки параметров оболочки. Если +o указан без option-name, set выводит в стандартный вывод последовательность команд set для восстановления текущих настроек параметров. Допустимые имена параметров:

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

Включает режим 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

Если этот параметр задан, Bash не разрешает символические ссылки при выполнении таких команд, как 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

Spec-Zone.ru

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