User Tools

Site Tools


shopt

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. Если установлено после вызова, включается поведение, предназначенное для использования отладчиками:

  1. Параметр -F для встроенной команды declare отображает имя исходного файла и номер строки, соответствующие каждому имени функции, предоставленному в качестве аргумента.
  2. Если команда, выполняемая ловушкой DEBUG, возвращает ненулевое значение - следующая команда пропускается и не выполняется.
  3. Если команда, запущенная с помощью ловушки DEBUG, возвращает значение 2, а оболочка выполняет подпрограмму (функция оболочки или сценарий оболочки, выполняемый с помощью встроенных команд . или source), оболочка имитирует вызов return.
  4. BASH_ARGC и BASH_ARGV обновляются, согласно описанию.
  5. Включается трассировка функций: подстановка команд, функции оболочки и подоболочки, вызываемые с помощью (command), наследуют ловушки DEBUG и RETURN.
  6. Включается трассировка ошибок: подстановка команд, функции оболочки и подоболочки, вызываемые с помощью (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

Если опция выставлена, bash будет регистра независимым в вычислениях условий shopt и case.

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).

shopt.txt · Last modified: 2023/04/06 10:28 (external edit)