Команда set
— встроенная команда оболочки Linux, которая отображает и устанавливает имена и значения переменных оболочки и среды Linux.
Содержание
Синтаксис
$ set [параметры] [аргументы]
Параметры
- -a
- Отмечает переменные, которые изменены или созданы для экспорта
- -b
- Предупреждает о завершении фонового задания
- -e
- Осуществляет немедленный выход при завершении команды с ненулевым статусом
- -f
- Отключает генерацию имени файла (подстановку)
- -h
- Запоминает расположение команд по мере их поиска (опция включена по умолчанию)
- -k
- Помещает все аргументы присваивания в среду для команды, а не только те, которые предшествуют имени команды
- -m
- Отображает сообщение по завершении задачи
- -n
- Читает команды, но не исполняет их
- -p
- Отключает обработку файлов и импорт функций оболочки (опция включена по умолчанию). Отключение этой опции устанавливает реальные uid и gid
- -t
- Осуществляет выход после прочтения и выполнения одной команды
- -u
- Рассматривает неустановленные переменные как ошибку при замене
- -v
- Отображает строки ввода оболочки по мере их чтения
- -x
- Выводит аргументы команды по мере их выполнения
- -B
- Выполняет расширение фигурной скобки
- -C
- Запрещает перезапись существующих обычных файлов путём перенаправления вывода (по умолчанию Bash это разрешает)
- -E
- Наследует ловушку ERR функциями оболочки
- -H
- Даёт возможность замены истории стиля (параметр включён по умолчанию, когда оболочка интерактивна)
- -P
- Предотвращает переход по символической ссылке при выполнении команд
- -T
- Заставляет ловушки DEBUG и RETURN наследоваться функциями оболочки
- --
- Присваивает оставшиеся аргументы позиционным параметрам, а при отсутствии аргументов сбрасывает позиционные параметры
- -
- Присваивает любые оставшиеся аргументы позиционным параметрам и отключает опции
-x
и-v
Для задания определённого параметра перед ним указывается знак -
, а для отключения знак плюс +
.
Аргументы
Аргументы являются позиционными параметрами и назначаются по порядку следующим образом:
$1
$2
...
$n
Отсутствие указания каких-либо параметров или аргументов приводит к тому, что команда выводит все переменные оболочки.
Выходные значения
Команда set
имеет три выходных значения:
- 0
- Отмечает успешное завершение
- 1
- Сбой, вызванный недопустимым аргументом
- 2
- Сбой, приводящий к сообщению об использовании, обычно из-за отсутствия аргумента
Использование команды set в Linux
Запуск команды без параметров
Запуск команды без параметров или аргументов выводит список всех настроек — имена и значения всех переменных оболочки и функций. Поскольку список очень длинный, его можно прокручивать с помощью клавиш Page Up и Page Down.
Ниже приведён пример частичного вывода команды:
oleg@mobile:~:$ set
BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:globasciiranges:interactive_comments:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=([0]="0")
BASH_ARGV=()
BASH_CMDS=()
BASH_COMPLETION_VERSINFO=([0]="2" [1]="11")
BASH_LINENO=()
BASH_SOURCE=()
BASH_VERSINFO=([0]="5" [1]="1" [2]="16" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu")
BASH_VERSION='5.1.16(1)-release'
COLORTERM=truecolor
COLUMNS=136
CSSTRNGS=/usr/share/locale
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
DEBUGINFOD_URLS='https://debuginfod.archlinux.org '
DIRSTACK=()
DISPLAY=:0.0
EUID=1000
GREP_COLOR='1;33'
GREP_OPTIONS=--color=auto
GROUPS=()
HISTFILE=/home/oleg/.bash_history
...
oleg@mobile:~:$
Включение/отключение отладочной информации
При отладке сценарием оболочки необходимо периодическое включение/отключение отладочной информации.
Для включение отладочной информации команда используется с параметром -x
:
oleg@mobile:~:$ set -x
++ printf '\033]0;%s@%s:%s\007' oleg mobile '~'
oleg@mobile:~:$
Для отключения отладочной информации утилита используется с параметром +x
:
oleg@mobile:~:$ set +x
+ set +x
oleg@mobile:~:$
Предотвращение потери данных
Для отключения поведения Bash по умолчанию, позволяющего выполнять перезапись существующих файлов, команда запускается с параметром -C
:
oleg@mobile:~:$ set -C
+ set -C
++ printf '\033]0;%s@%s:%s\007' oleg mobile '~'
oleg@mobile:~:$
Немедленная остановка скрипта
Для немедленной остановки скрипта команда выполняется с параметром -e
:
oleg@mobile:~:$ set -e
+ set -e
++ printf '\033]0;%s@%s:%s\007' oleg mobile '~'
oleg@mobile:~:$
Заключение
В этой короткой статье были показаны базовые примеры использования в Linux команды set
. Она может быть очень полезна в вашей дальнейшей работе.