Встроенное команда Shopt
Эта встроенная команда позволяет изменить дополнительное поведение оболочки.
shopt-
shopt [-pqsu] [-o] [optname …]
Переключает значения параметров, контролирующих необязательное поведение оболочки. Параметры могут быть теми, которые перечислены ниже, или, если используется опция -o, теми, которые доступны с опцией -o к команде
set(см. Встроенная команда Set). Без опций или с опцией -p отображается список всех настраиваемых параметров с указанием, установлены они или нет; если заданы optname, вывод ограничен этими параметрами. Опция -p приводит к отображению вывода в форме, которая может быть повторно использована в качестве входных данных. Другие опции имеют следующие значения:-s-
Включает (устанавливает) каждый optname.
-u-
Отключает (снимает установку) каждый optname.
-q-
Подавляет обычный вывод; код возврата указывает, установлен или снят флаг optname. Если с -q задано несколько аргументов optname, код возврата равен нулю, если все optname включены; в противном случае – ненулевое значение.
-oОграничивает значения optname теми, которые определены для опции -o к встроенной команде
set(см. Встроенная команда Set).
Если используется либо -s, либо -u без аргументов optname, то
shoptотображает только те параметры, которые установлены или сняты с установки, соответственно.За исключением случаев, когда указано иное, параметры
shoptпо умолчанию отключены.Код возврата при отображении параметров равен нулю, если все optname включены; в противном случае ненулевое значение. При установке или снятии параметров код возврата равен нулю, если optname является допустимым параметром оболочки.
Список
shoptпараметров:
assoc_expand_once-
Если установлено, оболочка подавляет многократное вычисление индексов ассоциативных массивов во время вычисления арифметических выражений, при выполнении встроенных команд, которые могут выполнять присваивание переменных, и при выполнении встроенных команд, которые выполняют обращение к элементам массива.
autocd-
Если установлено, имя команды, которое является именем каталога, выполняется так, как будто это аргумент команды
cd. Этот параметр используется только интерактивными оболочками. cdable_vars-
Если это установлено, аргумент встроенной команды
cd, который не является каталогом, предполагается именем переменной, значением которой является каталог, в который нужно перейти. cdspell-
Если установлено, незначительные ошибки в написании компонента каталога в команде
cdбудут исправлены. Проверяемые ошибки — это переставленные символы, отсутствующий символ и лишний символ. Если исправление найдено, исправленный путь печатается, и команда продолжается. Этот параметр используется только интерактивными оболочками. checkhash-
Если установлено, Bash проверяет, существует ли команда, найденная в таблице хэширования, перед попыткой её выполнения. Если хэшированная команда больше не существует, выполняется обычный поиск по пути.
checkjobs-
Если установлено, Bash выводит статус всех приостановленных и запущенных задач перед выходом из интерактивной оболочки. Если какие-либо задачи выполняются, выход откладывается до тех пор, пока не будет предпринята вторая попытка выхода без промежуточной команды (см. Управление задачами). Оболочка всегда откладывает выход, если какие-либо задачи приостановлены.
checkwinsize-
Если установлено, Bash проверяет размер окна после каждой внешней (не встроенной) команды и, если необходимо, обновляет значения
LINESиCOLUMNS. Этот параметр включен по умолчанию. cmdhist-
Если установлено, Bash пытается сохранить все строки многострочной команды в одной записи истории. Это позволяет легко повторно редактировать многострочные команды. Этот параметр включен по умолчанию, но действует только в том случае, если включена история команд (см. Средства истории Bash).
compat31compat32compat40compat41compat42compat43compat44-
Они управляют аспектами режима совместимости оболочки (см. Режим совместимости оболочки).
complete_fullquote-
Если установлено, Bash цитирует все метасимволы оболочки в именах файлов и каталогов при выполнении автодополнения. Если не установлено, Bash удаляет метасимволы, такие как знак доллара, из набора символов, которые будут цитироваться в завершённых именах файлов, когда эти метасимволы появляются в ссылках на переменные оболочки в словах, которые должны быть дополнены. Это означает, что знаки доллара в именах переменных, которые расширяются до каталогов, не будут цитироваться; однако любые знаки доллара, появляющиеся в именах файлов, также не будут цитироваться. Это активен только когда bash использует обратные слэши для цитирования завершенных имён файлов. Эта переменная установлена по умолчанию, что соответствует поведению Bash по умолчанию в версиях до 4.2.
direxpand-
Если установлено, Bash заменяет имена каталогов результатами расширения слов при выполнении автодополнения имён файлов. Это изменяет содержимое буфера редактирования Readline.
dirspell-
Если установлено, Bash пытается исправить орфографические ошибки в именах каталогов во время автодополнения слов, если первоначально введённое имя каталога не существует.
dotglob-
Если установлено, Bash включает в результаты расширения имён файлов имена файлов, начинающиеся с ‘.’. Имена файлов ‘.’ и ‘..’ всегда должны подходить явно, даже если
dotglobустановлено. execfail-
Если это установлено, неинтерактивная оболочка не выйдет, если не сможет выполнить файл, указанный как аргумент встроенной команды
exec. Интерактивная оболочка не выходит, еслиexecтерпит неудачу. expand_aliases-
Если установлено, алиасы расширяются, как описано ниже в разделе «Алиасы» (Алиасы). Этот параметр включён по умолчанию для интерактивных оболочек.
extdebug-
Если установлено при вызове оболочки или в файле запуска оболочки, организовать выполнение профиля отладчика до запуска оболочки, идентично параметру --debugger. Если установлено после вызова, включено поведение, предназначенное для использования отладчиками:
- Параметр -F встроенной команды
declare(см. Встроенные команды Bash) отображает имя файла и номер строки, соответствующие каждому имени функции, переданному в качестве аргумента. - Если команда, запущенная ловушкой
DEBUG, возвращает ненулевое значение, следующая команда пропускается и не выполняется. - Если команда, запущенная ловушкой
DEBUG, возвращает значение 2, и оболочка выполняется в подпрограмме (функции оболочки или скрипте оболочки, выполненном встроенными командами.илиsource), оболочка моделирует вызовreturn. -
BASH_ARGCиBASH_ARGVобновляются, как описано в их описаниях (см. Переменные Bash). - Включено отслеживание функций: подстановка команд, функции оболочки и подоболочки, вызываемые с
( command ), наследуют ловушкиDEBUGиRETURN. - Включено отслеживание ошибок: подстановка команд, функции оболочки и подоболочки, вызываемые с
( command ), наследуют ловушкуERR.
- Параметр -F встроенной команды
extglob-
Если установлено, расширенные функции сопоставления шаблонов, описанные выше (см. Сопоставление шаблонов), включены.
extquote-
Если установлено, цитирование
$'string'и$"string"выполняется внутри расширений${parameter}в двойных кавычках. Этот параметр включён по умолчанию. failglob-
Если установлено, шаблоны, которые не соответствуют именам файлов при расширении имён файлов, приводят к ошибке расширения.
force_fignore-
Если установлено, суффиксы, указанные в переменной оболочки
FIGNORE, заставляют слова игнорироваться при выполнении автодополнения слов, даже если проигнорированные слова являются единственными возможными дополнениями. См. Переменные Bash для описанияFIGNORE. Этот параметр включён по умолчанию. globasciiranges-
Если установлено, выражения диапазонов, используемые в выражениях со скобками в сопоставлении шаблонов (см. Сопоставление шаблонов), ведут себя так, как если бы они находились в традиционной локали C при сравнении. То есть, порядковый порядок сортировки текущей локали не учитывается, поэтому ‘b’ не будет сортироваться между ‘A’ и ‘B’, а прописные и строчные ASCII символы будут сортироваться вместе.
globskipdots-
Если установлено, расширение имён файлов никогда не будет сопоставлять имена файлов ‘.’ и ‘..’, даже если шаблон начинается с ‘.’. Этот параметр включен по умолчанию.
globstar-
Если установлено, шаблон ‘**’ в контексте расширения имён файлов будет подходить ко всем файлам и нулю или более каталогов и подкаталогов. Если за шаблоном следует ‘/’, то подходят только каталоги и подкаталоги.
gnu_errfmt-
Если установлено, сообщения об ошибках оболочки записываются в стандартном формате сообщений об ошибках GNU.
histappend-
Если установлено, список истории добавляется в файл, указанный значением переменной
HISTFILE, при выходе оболочки, а не перезаписывается. histreedit-
Если установлено, и используется Readline, пользователю предоставляется возможность повторно отредактировать неудачную подстановку истории.
histverify-
Если установлено, и используется Readline, результаты подстановки истории не передаются немедленно в анализатор оболочки. Вместо этого результирующая строка загружается в буфер редактирования Readline, что позволяет её дальнейшую модификацию.
hostcomplete-
Если установлено, Bash попытается выполнить автодополнение имени хоста, когда слово, содержащее ‘@’, дополняется (см. Разрешение Readline на ввод за вас). Этот параметр включён по умолчанию.
huponexit-
Если установлено, Bash отправит
SIGHUPвсем задачам, когда интерактивная оболочка входа завершается (см. Сигналы). inherit_errexit-
Если установлено, подстановка команд наследует значение параметра
errexit, а не отключает его в среде подоболочки. Этот параметр включён при включении режима POSIX. interactive_comments-
Разрешить слову, начинающемуся с ‘#’, вызывать игнорирование этого слова и всех оставшихся символов в этой строке в интерактивной оболочке. Этот параметр включён по умолчанию.
lastpipe-
Если установлено, и управление задачами не активно, оболочка выполняет последнюю команду канала, не выполняемую в фоновом режиме, в текущей среде оболочки.
lithist-
Если включено, и параметр
cmdhistвключён, многострочные команды сохраняются в истории с вложенными символами новой строки вместо использования разделителей точек с запятой, где это возможно. localvar_inherit-
Если установлено, локальные переменные наследуют значение и атрибуты переменной с тем же именем, которая существует в предыдущем объёме, прежде чем будет назначено какое-либо новое значение. Атрибут
namerefне наследуется. localvar_unset-
Если установлено, вызов
unsetлокальных переменных в предыдущих объёмах функций помечает их так, что последующие запросы находят их не установленными до тех пор, пока функция не вернётся. Это идентично поведению отключения локальных переменных в текущем объёме функции. login_shell-
Оболочка устанавливает этот параметр, если она запущена как оболочка входа (см. Вызов Bash). Значение изменить нельзя.
mailwarn-
Если установлено, и Bash проверяет файл на наличие почты, который был изменён с момента последней проверки, отображается сообщение
"The mail in mailfile has been read". no_empty_cmd_completion-
Если установлено, и используется Readline, Bash не будет пытаться искать
PATHдля возможных дополнений при попытке дополнения в пустой строке. nocaseglob
-
Если задано, Bash сопоставляет имена файлов в режиме игнорирования регистра при выполнении расширения имён файлов.
nocasematch-
Если задано, Bash сопоставляет шаблоны в режиме игнорирования регистра при выполнении сопоставления при выполнении условных команд
caseили[[(см. Условные конструкции), при выполнении расширения слов подстановки шаблонов или при фильтрации возможных дополнений в рамках программируемого дополнения. noexpand_translation-
Если задано, Bash заключает переведённые результаты цитирования $"..." в одинарные кавычки вместо двойных. Если строка не переводится, это не оказывает влияния.
nullglob-
Если задано, Bash позволяет шаблонам имён файлов, которые не соответствуют ни одному файлу, расширяться до пустой строки вместо самих себя.
patsub_replacement-
Если задано, Bash расширяет вхождения ‘&’ в строку замены подстановки шаблонов до текста, соответствующего шаблону, как описано выше (см. Расширение параметров оболочки). Этот параметр включён по умолчанию.
progcomp-
Если задано, в Bash активированы средства программируемого дополнения (см. Программируемое дополнение). Этот параметр включён по умолчанию.
progcomp_alias-
Если задано и программируемое дополнение включено, Bash рассматривает имя команды, у которой нет дополнений, как возможный псевдоним и пытается расширить псевдоним. Если у него есть псевдоним, Bash пытается выполнить программируемое дополнение, используя слово команды, полученное в результате расширения псевдонима.
promptvars-
Если задано, строки подсказки подвергаются расширению параметров, подстановке команд, арифметическому расширению и удалению кавычек после расширения, как описано ниже (см. Управление подсказкой). Этот параметр включён по умолчанию.
restricted_shell-
Оболочка устанавливает этот параметр, если она запущена в ограниченном режиме (см. Ограниченная оболочка). Значение нельзя изменить. Это не сбрасывается при выполнении файлов автозапуска, что позволяет файлам автозапуска определить, ограничена ли оболочка или нет.
shift_verbose-
Если это задано, встроенная команда
shiftвыводит сообщение об ошибке, когда счёт сдвига превышает количество позиционных параметров. sourcepath-
Если задано, встроенная команда
.(source) использует значениеPATH, чтобы найти каталог, содержащий файл, указанный в качестве аргумента. Этот параметр включён по умолчанию. varredir_close-
Если задано, оболочка автоматически закрывает дескрипторы файлов, назначенные с помощью синтаксиса перенаправления
{varname}(см. Перенаправления), вместо того, чтобы оставлять их открытыми после завершения команды. xpg_echo-
Если задано, встроенная команда
echoпо умолчанию расширяет последовательности обратной косой черты с эскейпом.
-
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-Shopt-Builtin.html