Команда set в Linux

Опубликовано admin - пт, 08/04/2023 - 15:03

Команда set — встроенная команда оболочки Linux, которая отображает и устанавливает имена и значения переменных оболочки и среды Linux.

Примеры использования команды set в 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. Она может быть очень полезна в вашей дальнейшей работе.

Поделиться с друзьями