shopt
Материал из Xgu.ru
Опции могут быть включены командой shopt -s имя_опции. И выключены командой shopt -u имя_опции. По-умолчанию опции выключены, если не указано обратное.
shopt — встроенная команда оболочки, управляет опциями. Изменяет значение внутренних конфигурационных параметров оболочки.
[править] Синтаксис
shopt [-pqsu] [-o] [имя_опции...]
[править] Описание
Некоторые опции могут устанавливаться встроенной командой set. |
- -o
- Ограничивает значения параметра имя_опции теми, которые определены флагом -o встроенной комманды set.[1].
- -p
- Печатает команду shopt с параметрами, которые выставят оболочку в такое положение, как сейчас.
- -q
- Тихий режим. Выстваляет код возврата в 0 если опция выставлена. Если опций было задано несколько то вернет 0 (TRUE) если все опции выставлены. Иначе вернет 1 (FALSE).
- -s
- Выставляет (разрешает) опцию или список опций.
- -u
- Отключает опцию или список. shopt с ключем -s или -u без имени опции выведет список опций которые только включены или выключены.
[править] Код завершения
Когда идет установка опций - код возврата 0 (TRUE) если смена всех опций прошла успешно. Когда выдается список опций - код возврата 0 (TRUE) если все опции выставлены. Иначе 1 (FALSE)
[править] Список опций оболочки bash
[править] autocd
Если имя вводимой команды является именем каталога, то осуществляется переход в этот каталог, как будто была введена команда cd имя_каталога.
username@localhost:~$ shopt -s autocd username@localhost:~$ /home cd /home username@localhost:/home$ shopt -u autocd username@localhost:/home$ /home/username -bash: /home/username: Это каталог
[править] cdable_vars
Если опция установлена, то каждый (отдельный) аргумент команды cd, который не является каталогом, будет рассматриваться как имя переменной. Если путь с именем переменнной обнаружен, он будет выведен на экран, и будет выполнена команда cd.
[username@localhost tmp]$ shopt -s cdable_vars [username@localhost tmp]$ cd HOME /home/username [username@localhost ~]$ shopt -u cdable_vars [username@localhost ~]$ cd HOME bash: cd: HOME: No such file or directory
[править] cdspell
Незначительные ошибки в написании каталога команды cd будут исправляться: поменянные местами соседние символы, пропущенные, удвоенные символы. Если исправленный путь обнаружен - он будет выведен на экран, и будет выполнена команда cd. Работает только в интерактивном режиме.
[править] checkhash
Если опция выставлена, то перед тем как выполнять команду - проверяется её наличие в hash-таблице. Если она там не найдена, тогда отрабатывается полноценный поиск по $PATH.
[править] checkjobs
с версии 4.0 Если опция выставлена, то перед тем как выйти из оболочки, проверяет и докладывает о наличии работающих job-ов. См опцию huponexit.
[править] checkwinsize
Если опция выставлена, то после каждой команды оболочка проверяет размер экрана терминала, и обновляет переменные LINES и COLUMNS. По-умолчанию выключена, но в современных дистрибутивах, в интерактивном графическом режиме по профилям выставляется.
[править] cmdhist
Если опция выставлена, bash старается все строки многострочной команды рассматривать как одну для сохранения в истории. Это дает возможность просто редактировать многострочные команды. Смотрте также утилиту rlwrap.
[править] compat**
в зависимости от версии: compat31; compat32; compat40; compat41
Опции работы новой версии bash в режиме совместимости более старшей версии.
[править] direxpand
Если включено, bash подставляет имена директорий из переменной во время автодополнения.
username@localhost:~$ abc=/home/username/Music username@localhost:~$ shopt -u direxpand username@localhost:~$ cd $abc/<TAB> Выпьем за любовь.mp3 username@localhost:~$ shopt -s direxpand username@localhost:~$ cd $abc/<TAB> username@localhost:~$ cd /home/username/Music/
[править] dirspell
c версии 4.0
Если опция выставлена - bash будет пытаться исправлять имена каталогов.
[править] dotglob
Если опция выставлена - bash будет включать в список файлов файлы, начинающиеся с точки ( .bashrc ) в результат glob-а.
[править] execfail
Если опция выставлена - неинтерактивная оболочка не прервет свою работу, если вызов exec не сможет выполнить файл, указанный в качестве аргумента. Интерактивной оболочке нет смысла выставлять/убирать эту опцию: она не завершает работу если exec не справляется с запуском аргумента.
[править] expand_aliases
Если опция выставлена - alias-ы будут развернуты (см Подстановки). По-умолчанию для интерактивных опция включена, для не-интерактивных выключена.
[править] extdebug
Если задано при вызове оболочки, проводит выполнение отладочного профиля до запуска оболочки, идентично параметру --debugger. Если установлено после вызова, включается поведение, предназначенное для использования отладчиками:
- Параметр -F для встроенной команды declare отображает имя исходного файла и номер строки, соответствующие каждому имени функции, предоставленному в качестве аргумента.
- Если команда, выполняемая ловушкой DEBUG, возвращает ненулевое значение - следующая команда пропускается и не выполняется.
- Если команда, запущенная с помощью ловушки DEBUG, возвращает значение 2, а оболочка выполняет подпрограмму (функция оболочки или сценарий оболочки, выполняемый с помощью встроенных команд . или source), оболочка имитирует вызов return.
- BASH_ARGC и BASH_ARGV обновляются, согласно описанию.[2]
- Включается трассировка функций: подстановка команд, функции оболочки и подоболочки, вызываемые с помощью (command), наследуют ловушки DEBUG и RETURN.
- Включается трассировка ошибок: подстановка команд, функции оболочки и подоболочки, вызываемые с помощью (command), наследуют ловушку ERR.
[править] extglob
Если опция выставлена - будут использоваться расширенные glob-ы (см Подстановки). По-умолчанию для интерактивных
[править] extquote
Если включено, $'string'[3] и $"string"[4] выполняется внутри ${parameter} заключенного в двойные скобки. Включено по умолчанию.
[править] failglob
Если опция выставлена - при использовании glob-а, в который не попадает ни одного файла, будет выведено сообщение об ошибке.
[username@localhost ~]$ mkdir /tmp/foo && cd /tmp/foo [username@localhost foo]$ shopt -u failglob [username@localhost foo]$ ls * ls: cannot access *: No such file or directory [username@localhost foo]$ shopt -s failglob [username@localhost foo]$ ls * bash: no match: *
При взведении опции до выполнения команды ls дело не дошло.
[править] force_fignore
Если опция выставлена - суффиксы определенные в переменной FIGNORE будут игнорироваться при автодополнении, даже если они являются единственными возможным совпадением. Эта опция включена по-умолчанию.
[править] globasciiranges
Если включено, регулярные выражения диапазона [...], ведут себя так, как если бы они выполнялись в традиционной локали "C". То есть текущая последовательность упорядочивания локали не учитывается, поэтому 'b' не будет сопоставляться между 'A' и 'B', а заглавные и строчные символы ASCII будут сопоставляться отдельно.
[править] globstar
c версии 4.0
Если опция выставлена - 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
c версии 2.02
Если опция выставлена - bash разворачивая glob-ы, будет регистронезависимым по отношению к объектам файловой системы.
[править] nocasematch
c версии 3.1
Если опция выставлена - bash будет регистронезависимым в вычислениях условий [[ ]] и case.
[править] nullglob
Если опция выставлена - bash раскрывает glob-ы не совпадающие ни с одним файлом в строку нулевой длины. При этом есть связь с опцией failglob:
failglob выставлена + nullglob выставлена = bash перехватит "неправильный" glob и не выполнит команду.
failglob не выставлена + nullglob выставлена = команде будет передана строка нулевой длины.
failglob выставлена + nullglob не выставлена = bash перехватит "неправильный" glob и не выполнит команду.
failglob не выставлена + nullglob не выставлена = команде будет передан "неправильный" glob.
[править] progcomp
Если опция выставлена - разрешены программируемые команды автодополнения [5]. По-умолчанию включено.
[править] promptvars
Если опция выставлена - строка приглашения производит подстановку значений переменных, подстановку команд, арифметических выражений, убирает кавычки, специальные символы[6] после стандартных подстановок, описанных в разделе (Controlling the Prompt)[7]. эта опция включена по-умолчанию.
[править] restricted_shell
Командный интерпретатор устанавливает эту опцию, если он запущен в ограниченном режиме[8]. Значение этой опции изменять нельзя. Она не сбрасывается при выполнении файлов начального запуска, что позволяет в этих файлах учесть, является ли командный интерпретатор ограниченным.
[править] shift_verbose
Если опция выставлена - встроенная команда shift будет выдавать сообщение об ошибке "позиционные параметры кончились".
[править] sourcepath
Если опция выставлена - встроенная команда source использует значение переменной PATH для поиска каталога, содержащего файл, переданный в качестве аргумента. Эта опция по умолчанию включена.
[править] xpg_echo
Если опция выставлена - встроенная команда echo раскрывает backslash esc-последовательности по-умолчанию. (POSIX, SUS, XPG).
[править] Примечания
- ↑ The Set Builtin: http://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html
- ↑ Bash-Variables: http://www.gnu.org/software/bash/manual/html_node/Bash-Variables.html
- ↑ ANSI-C Quoting: http://www.gnu.org/software/bash/manual/html_node/ANSI_002dC-Quoting.html
- ↑ Locale-Translation: http://www.gnu.org/software/bash/manual/html_node/Locale-Translation.html
- ↑ Programmable Completion: http://www.gnu.org/software/bash/manual/html_node/Programmable-Completion.html
- ↑ Quote Removal: http://www.gnu.org/software/bash/manual/html_node/Quote-Removal.html
- ↑ Controlling the Prompt: http://www.gnu.org/software/bash/manual/html_node/Controlling-the-Prompt.html
- ↑ The-Restricted-Shell: http://www.gnu.org/software/bash/manual/html_node/The-Restricted-Shell.html http://www.opennet.ru/man.shtml?topic=bash&category=8&russian=0#restricted_shell
Интерфейс командной строки | |
---|---|
Основы | Потоки ввода/вывода • Командная строка |
Пользовательское окружение | Оболочка интерпретатора • Приглашение командного интерпретатора • bash_completion • shopt |
Скриптинг | Скриптинг • Интерпретатор • Shebang • Shell-скриптинг • shell-framework • expect • awk • sed |