Встроенная команда 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:array_expand_once-
Если этот параметр установлен, оболочка подавляет многократное вычисление индексов ассоциативных и индексированных массивов при вычислении арифметических выражений, при выполнении встроенных команд, способных присваивать значения переменным, и при выполнении встроенных команд, разыменовывающих массивы.
assoc_expand_once-
Устарел; синоним
array_expand_once. autocd-
Если этот параметр установлен, имя команды, совпадающее с именем каталога, выполняется так, как если бы оно было аргументом команды
cd. Этот параметр используется только интерактивными оболочками. bash_source_fullpath-
Если этот параметр установлен, имена файлов, добавляемые в переменную-массив
BASH_SOURCE, преобразуются в полные пути (см. Переменные Bash). cdable_vars-
Если этот параметр установлен, аргумент встроенной команды
cd, не являющийся каталогом, считается именем переменной, значением которой является каталог для перехода. cdspell-
Если этот параметр установлен, команда
cdпытается исправить небольшие ошибки в написании компонента имени каталога. К небольшим ошибкам относятся перестановка символов, пропуск символа и лишний символ. Еслиcdисправляет имя каталога, она выводит исправленное имя файла, и команда выполняется. Этот параметр используется только интерактивными оболочками. checkhash-
Если этот параметр установлен, Bash проверяет существование команды, найденной в хеш-таблице, прежде чем пытаться ее выполнить. Если хешированная команда больше не существует, Bash выполняет обычный поиск по путям.
checkjobs-
Если этот параметр установлен, перед выходом из интерактивной оболочки Bash выводит состояние всех остановленных и выполняющихся заданий. Если выполняются какие-либо задания, Bash откладывает выход до повторной попытки выйти без промежуточного выполнения команд (см. Управление заданиями). Оболочка всегда откладывает выход, если какие-либо задания остановлены.
checkwinsize-
Если этот параметр установлен, Bash проверяет размер окна после каждой внешней (не встроенной) команды и при необходимости обновляет значения
LINESиCOLUMNS, используя файловый дескриптор, связанный со стандартным потоком ошибок, если он является терминалом. Этот параметр включен по умолчанию. cmdhist-
Если этот параметр установлен, Bash пытается сохранить все строки многострочной команды в одной записи истории. Это упрощает повторное редактирование многострочных команд. Этот параметр включен по умолчанию, но действует только при включенной истории команд (см. Возможности истории Bash).
compat31compat32compat40compat41compat42compat43compat44-
Эти параметры управляют особенностями режима совместимости оболочки (см. Режим совместимости оболочки).
complete_fullquote-
Если этот параметр установлен, Bash экранирует все метасимволы оболочки в именах файлов и каталогов при выполнении автодополнения. Если параметр не установлен, Bash исключает метасимволы, например знак доллара, из набора символов, которые экранируются в дополненных именах файлов, когда эти метасимволы встречаются в ссылках на переменные оболочки в дополняемых словах. Это означает, что знаки доллара в именах переменных, раскрывающихся в каталоги, не будут экранироваться; однако знаки доллара, встречающиеся в именах файлов, также не будут экранироваться. Этот параметр действует только тогда, когда Bash экранирует дополненные имена файлов обратной косой чертой. По умолчанию эта переменная установлена, что соответствует поведению Bash по умолчанию вплоть до версии 4.2.
direxpand-
Если этот параметр установлен, Bash заменяет имена каталогов результатами раскрытия слов при автодополнении имен файлов. Это изменяет содержимое буфера редактирования Readline. Если параметр не установлен, Bash пытается сохранить исходный ввод пользователя.
dirspell-
Если этот параметр установлен, Bash пытается исправлять написание имен каталогов при автодополнении слов, если указанный изначально каталог не существует.
dotglob-
Если этот параметр установлен, в результаты раскрытия имен файлов включаются имена файлов, начинающиеся с ‘.’. Имена файлов . и .. всегда должны указываться явно, даже если установлен
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-
Если этот параметр установлен и используется Readline, 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 следит на предмет новой почты, Bash выводит сообщение
"The mail in mailfile has been read". no_empty_cmd_completion-
Если этот параметр установлен и используется Readline, Bash не выполняет поиск возможных вариантов автодополнения в
PATHпри попытке автодополнения в пустой строке. nocaseglob-
Если этот параметр установлен, Bash при раскрытии имен файлов не учитывает регистр символов в их именах.
nocasematch-
Если этот параметр установлен, Bash не учитывает регистр символов при сопоставлении с образцом во время выполнения условных команд
caseили[[(см. Условные конструкции), при раскрытии слов с подстановкой по шаблону или при фильтрации возможных вариантов автодополнения в рамках программируемого автодополнения. noexpand_translation-
Если этот параметр установлен, Bash заключает переведенные результаты экранирования $"…" в одинарные кавычки вместо двойных. Если строка не переводится, параметр ни на что не влияет.
nullglob-
Если этот параметр установлен, шаблоны раскрытия имен файлов, которым не соответствуют файлы (см. Раскрытие имен файлов), раскрываются в пустую строку и удаляются, а не остаются без изменений.
patsub_replacement-
Если этот параметр установлен, Bash заменяет вхождения ‘&’ в строке замены при подстановке по шаблону текстом, соответствующим шаблону, как описано выше (см. Раскрытие параметров оболочки). Этот параметр включен по умолчанию.
progcomp-
Если этот параметр установлен, включаются средства программируемого автодополнения (см. Программируемое автодополнение). Этот параметр включен по умолчанию.
progcomp_alias-
Если этот параметр установлен и программируемое автодополнение включено, Bash рассматривает имя команды, для которой нет вариантов автодополнения, как возможный псевдоним и пытается выполнить раскрытие псевдонима. Если псевдоним существует, Bash пытается выполнить программируемое автодополнение, используя слово команды, полученное после раскрытия псевдонима.
promptvars-
Если этот параметр установлен, после раскрытия, описанного ниже (см. Управление приглашением), строки приглашения подвергаются раскрытию параметров, подстановке команд, арифметическому раскрытию и удалению кавычек. Этот параметр включен по умолчанию.
restricted_shell-
Оболочка устанавливает этот параметр, если она запущена в ограниченном режиме (см. Ограниченная оболочка). Значение этого параметра нельзя изменить. Он не сбрасывается при выполнении файлов запуска, что позволяет этим файлам определить, является ли оболочка ограниченной.
shift_verbose-
Если этот параметр установлен, встроенная команда
shiftвыводит сообщение об ошибке, когда величина сдвига превышает число позиционных параметров. sourcepath-
Если этот параметр установлен, встроенная команда
.(source) использует значениеPATHдля поиска каталога, содержащего файл, переданный в качестве аргумента, если параметр -p не указан. Этот параметр включен по умолчанию. varredir_close-
Если этот параметр установлен, оболочка автоматически закрывает файловые дескрипторы, назначенные с помощью синтаксиса перенаправления
{varname}(см. Перенаправления), вместо того чтобы оставлять их открытыми после завершения команды. xpg_echo-
Если этот параметр установлен, встроенная команда
echoпо умолчанию раскрывает последовательности с экранированием обратной косой чертой. Если также включен параметр оболочкиposix(см. Встроенная команда Set),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