Я вижу, что extglob включен, но я хотел бы знать, где это установлено.
$ shopt extglob
extglob on
$
Не нашел его в этих файлах.
~/.bashrc
~/.bash_profile
~/.profile
/etc/bashrc
(такого файла нет) /etc/bash.bashrc
На моих 14.04 VM я нашел его в /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_completion
, получен.
Это установлено под /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
, это будет установлено после утверждения интерактивной оболочки невхода в систему.