shopt

Материал из Xgu.ru

Перейти к: навигация, поиск
перевод wiki.bash-hackers.org: [1], [2], [3]

Опции могут быть включены командой shopt -s имя_опции. И выключены командой shopt -u имя_опции. По-умолчанию опции выключены, если не указано обратное.

shopt — встроенная команда оболочки, управляет опциями. Изменяет значение внутренних конфигурационных параметров оболочки.

Содержание

[править] Синтаксис

shopt [-pqsu] [-o] [имя_опции...]

[править] Описание

Icon-caution.gif

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

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

[править] Примечания

  1. The Set Builtin: http://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html
  2. Bash-Variables: http://www.gnu.org/software/bash/manual/html_node/Bash-Variables.html
  3. ANSI-C Quoting: http://www.gnu.org/software/bash/manual/html_node/ANSI_002dC-Quoting.html
  4. Locale-Translation: http://www.gnu.org/software/bash/manual/html_node/Locale-Translation.html
  5. Programmable Completion: http://www.gnu.org/software/bash/manual/html_node/Programmable-Completion.html
  6. Quote Removal: http://www.gnu.org/software/bash/manual/html_node/Quote-Removal.html
  7. Controlling the Prompt: http://www.gnu.org/software/bash/manual/html_node/Controlling-the-Prompt.html
  8. 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


Источник — «http://xgu.ru/wiki/shopt»