Table of Contents
shopt
shopt – встроенная команда оболочки, управляет опциями. Изменяет значение внутренних конфигурационных параметров оболочки.
Опции могут быть включены командой shopt -s optname
. И выключены командой shopt -u optname
. По-умолчанию опции выключены, если не указано обратное.
Чтобы проверить все параметры, доступные для использования с командой shopt, просто введем shopt в терминале:
shopt
Либо для удобства, выведем несколько колонок
shopt | column
Syntax
shopt [-pqsu] [-o] [optname...]
Некоторые опции могут устанавливаться встроенной командой set.
-o
– Ограничивает значения параметра имя_опции теми, которые определены флагом-o
встроенной командыset
.-p
– Печатает команду shopt с параметрами, которые выставят оболочку в такое положение, как сейчас.-q
– Тихий режим. Выставляет код возврата в 0 если опция выставлена. Если опций было задано несколько, то вернет 0 (TRUE) если все опции выставлены. Иначе вернет 1 (FALSE).-s
– Выставляет (разрешает) опцию или список опций.-u
– Отключает опцию или список. shopt с ключем-s
или-u
без имени опции, выведет список опций которые только включены или выключены.
Список опций оболочки bash
autocd
Если имя вводимой команды является именем директории, то осуществляется переход в эту директорию, как будто была введена команда cd dirName
.
shopt -s autocd /home cd -- /home
cdable_vars
Если опция установлена, то каждый (отдельный) аргумент команды cd, который не является каталогом, будет рассматриваться как имя переменной. Если путь с именем переменной обнаружен, он будет выведен на экран, и будет выполнена команда cd.
shopt -s cdable_vars cd HOME /home/username shopt -u cdable_vars cd HOME bash: cd: HOME: No such file or directory
cdspell
Незначительные ошибки в написании каталога команды cd будут исправляться: поменянные местами соседние символы, пропущенные, удвоенные символы. Если исправленный путь обнаружен – он будет выведен на экран, и будет выполнена команда cd. Работает только в интерактивном режиме.
checkhash
Если опция выставлена, то перед тем как выполнять команду - проверяется её наличие в hash-таблице. Если она там не найдена, тогда отрабатывается полноценный поиск по $PATH
.
checkjobs
Если опция выставлена, то перед тем как выйти из оболочки, проверяет и докладывает о наличии работающих job-ов. См. опцию huponexit.
checkwinsize
Если опция выставлена, то после каждой команды оболочка проверяет размер экрана терминала, и обновляет переменные LINES и COLUMNS. По умолчанию выключена, но в современных дистрибутивах, в интерактивном графическом режиме по профилям выставляется.
cmdhist
Если опция выставлена, bash старается все строки многострочной команды рассматривать как одну для сохранения в истории. Это дает возможность просто редактировать многострочные команды. Также, можно обратить внимание на утилиту rlwrap.
compat**
в зависимости от версии: compat31
; compat32
; compat40
; compat41
Опции работы новой версии bash в режиме совместимости более старшей версии.
direxpand
Если включено, bash подставляет имена директорий из переменной во время автодополнения.
shopt -s direxpand cd $mypath/<TAB> conf.d/ modules-available/ modules-enabled/ sites-available/ sites-enabled/ snippets/
dirspell
Если опция выставлена – bash будет пытаться исправлять имена каталогов.
dotglob
Если опция выставлена – bash будет включать в список файлов файлы, начинающиеся с точки (.bashrc
) в результат glob-а.
execfail
Если опция выставлена, не интерактивная оболочка продолжит свою работу, если вызов exec не сможет выполнить файл, указанный в качестве аргумента. Интерактивной оболочке нет смысла выставлять/убирать эту опцию: она не завершает работу если exec не справляется с запуском аргумента.
expand_aliases
Если опция выставлена – alias-ы будут развернуты. По умолчанию, для интерактивных опция включена, для не интерактивных выключена.
extdebug
Если задано при вызове оболочки, проводит выполнение отладочного профиля до запуска оболочки, идентично параметру –debugger
. Если установлено после вызова, включается поведение, предназначенное для использования отладчиками:
- Параметр
-F
для встроенной командыdeclare
отображает имя исходного файла и номер строки, соответствующие каждому имени функции, предоставленному в качестве аргумента. - Если команда, выполняемая ловушкой
DEBUG
, возвращает ненулевое значение - следующая команда пропускается и не выполняется. - Если команда, запущенная с помощью ловушки
DEBUG
, возвращает значение 2, а оболочка выполняет подпрограмму (функция оболочки или сценарий оболочки, выполняемый с помощью встроенных команд.
илиsource
), оболочка имитирует вызовreturn
. BASH_ARGC
иBASH_ARGV
обновляются, согласно описанию.- Включается трассировка функций: подстановка команд, функции оболочки и подоболочки, вызываемые с помощью (command), наследуют ловушки
DEBUG
иRETURN
. - Включается трассировка ошибок: подстановка команд, функции оболочки и подоболочки, вызываемые с помощью (command), наследуют ловушку
ERR
.
extglob
Если опция выставлена - будут использоваться расширенные glob-ы (Подстановки). По умолчанию для интерактивных
extquote
Если включено, $'string' и $"string" выполняется внутри ${parameter}
заключенного в двойные скобки. Включено по умолчанию.
failglob
Если опция выставлена, при использовании glob-а, в который не попадает ни одного файла, будет выведено сообщение об ошибке.
mkdir /tmp/foo && cd /tmp/foo shopt -u failglob ls * ls: cannot access *: No such file or directory shopt -s failglob ls * bash: no match: *
force_fignore
Если опция выставлена - суффиксы определенные в переменной FIGNORE
будут игнорироваться при автодополнении, даже если они являются единственными возможным совпадением. Эта опция включена по умолчанию.
globasciiranges
Если включено, регулярные выражения диапазона […]
, ведут себя так, как если бы они выполнялись в традиционной локали “C”. То есть текущая последовательность упорядочивания локали не учитывается, поэтому b
не будет сопоставляться между A
и B
, а заглавные и строчные символы ASCII будут сопоставляться отдельно.
globstar
Если опция выставлена – glob **
становится рекурсивным. То есть ведётся поиск соответствия всем файлам и 0 или больше, поддиректориям. Если указать /
в конце шаблона, то сопоставляются только директории.
gnu_errfmt
Если опция выставлена, ошибки будут выдаваться в стандартном формате GNU.
histappend
Если опция выставлена, история команд будет добавлена в файл $HISTFILE
, в противном случае файл будет перезаписан опция по умолчанию отключена, но в современных дистрибутивах опция взводится в файлах конфигурации инициализации оболочки.
histreedit
Если опция выставлена и используется командная строка, то у пользователя будет возможность редактирования команд из истории.
histverify
Если опция выставлена и используется командная строка, результаты подстановки истории не передаются немедленно в синтаксический анализатор. Вместо этого результирующая команда загружается в буфер редактирования командной строки, что позволяет ее дальнейшую модификацию.
hostcomlete
Если опция выставлена bash completion
будет также дополнять имена хостов из /etc/hosts
если в слове присутствует @
. Включено по умолчанию.
huponexit
Если опция выставлена - при выходе из интерактивной оболочки bash отсылает job-ам сигнал hungup (SIGHUP). Защитить job-ы можно запуская их с nohup.
inherit_errexit
Если включено, подстановка команды наследует значение опции errexit, а не отменяет ее в среде subshell. Этот параметр включен, если включен режим POSIX.
interactive_comments
Разрешить, чтобы слово начинающееся с '#' и все оставшиеся символы в этой строке игнорировались в интерактивной оболочке. Эта опция включена по умолчанию
lastpipe
Если опция включена, а управление заданием не активно, оболочка запускает последнюю команду конвейера, не выполняемую в фоновом режиме в текущей среде оболочки.
lithist
Если эта опция и cmdhist выставлены, то многострочные команды записываются с символом перевода строки вместо использования точки с запятой там, где это возможно.
login_shell
Эта опция выставляется, если данная оболочка является оболочкой логина. Выставляется автоматически, изменить нельзя.
mailwarn
Если опция выставлена и файл почты просматривался вне bash (bash ведет свой счетчик проверки почты) то bash покажет сообщение:
The mail in mailfile has been read.
no_empty_cmd_completion
Если опция выставлена и используется readline, bash не будет пытаться искать программы из PATH в пустой строки ввода по <tab><tab>
nocaseglob
Если опция выставлена, bash, разворачивая glob-ы, будет регистра независимым по отношению к объектам файловой системы.
nocasematch
nullglob
Если опция выставлена, bash раскрывает glob-ы не совпадающие ни с одним файлом в строку нулевой длины. При этом есть связь с опцией failglob:
failglob
выставлена +nullglob
выставлена = bash перехватит “неправильный” glob и не выполнит команду.failglob
не выставлена +nullglob
выставлена = команде будет передана строка нулевой длины.failglob
выставлена +nullglob
не выставлена = bash перехватит “неправильный” glob и не выполнит команду.failglob
не выставлена +nullglob
не выставлена = команде будет передан “неправильный” glob.
progcomp
Если опция выставлена - разрешены программируемые команды автодополнения. По умолчанию включено.
promptvars
Если опция выставлена - строка приглашения производит подстановку значений переменных, подстановку команд, арифметических выражений, убирает кавычки, специальные символы после стандартных подстановок, описанных в разделе (Controlling the Prompt). Эта опция включена по умолчанию.
restricted_shell
Командный интерпретатор устанавливает эту опцию, если он запущен в ограниченном режиме. Значение этой опции изменять нельзя. Она не сбрасывается при выполнении файлов начального запуска, что позволяет в этих файлах учесть, является ли командный интерпретатор ограниченным.
shift_verbose
Если опция выставлена - встроенная команда shift будет выдавать сообщение об ошибке:
позиционные параметры кончились.
sourcepath
Если опция выставлена, встроенная команда source
использует значение переменной PATH
для поиска каталога, содержащего файл, переданный в качестве аргумента. Эта опция по умолчанию включена.
xpg_echo
Если опция выставлена, встроенная команда echo
раскрывает backslash esc-последовательности по умолчанию. (POSIX, SUS, XPG).