Где в bash включена опция «shopt extglob» для моей интерактивной оболочки?

Где в bash включена опция «shopt extglob» для моей интерактивной оболочки?

Я вижу, что extglob включен, но мне бы хотелось знать, где он настраивается.

$ shopt extglob
extglob         on
$

Не нашел его в этих файлах.

  • ~/.bashrc
  • ~/.bash_profile
  • ~/.profile
  • /etc/bashrc(нет такого файла)
  • /etc/bash.bashrc

решение1

На моей виртуальной машине 14.04 я нашел его в /usr/share/bash-completion/bash_completion:

ubuntu@ubuntu:~$ grep extglob /usr/share/bash-completion/bash_completion 
shopt -s extglob progcomp
ubuntu@ubuntu:~$ 

Источник ~/.bashrc:

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

Это можно выяснить, запустив bash -x, который показывает все исходные файлы запуска и их команды. Запустите script -c "bash -x", затем exitв новой интерактивной оболочке изучите typescriptвывод файла из скрипта:

+ . /usr/share/bash-completion/bash_completion

...

++ shopt -s extglob progcomp

Символы +' указывают на уровень исходного файла, поэтому, если мы посмотрим на один уровень выше по shoptкоманде, мы увидим /usr/share/bash-completion/bash_completionis sourced.

решение2

Он установлен в /usr/share/bash-completion/bash_completionфайле:

shopt -s extglob progcomp

Файл ~/.bashrcимеет следующее, если posixопция не задана, то:

if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion

Это означает, что если файл /usr/share/bash-completion/bash_completionсуществует, он будет выбран в качестве источника.

Поскольку этот файл содержит строку для установки extglob, она будет установлена ​​при запуске интерактивной оболочки без входа в систему.

Связанный контент