Veo que extglob está activado pero me gustaría saber dónde está configurado.
$ shopt extglob
extglob on
$
No lo encontré en estos archivos.
~/.bashrc
~/.bash_profile
~/.profile
/etc/bashrc
(No existe el archivo)/etc/bash.bashrc
Respuesta1
En mi VM 14.04, lo encontré en /usr/share/bash-completion/bash_completion
:
ubuntu@ubuntu:~$ grep extglob /usr/share/bash-completion/bash_completion
shopt -s extglob progcomp
ubuntu@ubuntu:~$
Esto proviene de ~/.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
Esto se puede resolver ejecutando bash -x
, que muestra todos los archivos de inicio obtenidos y sus comandos. Ejecute script -c "bash -x"
, luego exit
en el nuevo shell interactivo, luego examine el typescript
resultado del archivo del script:
+ . /usr/share/bash-completion/bash_completion
...
++ shopt -s extglob progcomp
Los +
's indican el nivel del archivo de origen, por lo que cuando miramos un nivel por encima del shopt
comando, vemos /usr/share/bash-completion/bash_completion
que es de origen.
Respuesta2
Está configurado en /usr/share/bash-completion/bash_completion
el archivo:
shopt -s extglob progcomp
El ~/.bashrc
archivo tiene lo siguiente, si posix
la opción no está configurada, entonces:
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
Eso significa que si el archivo /usr/share/bash-completion/bash_completion
existe, lo obtendrá.
Como ese archivo contiene la línea para configurar extglob
, se configurará al indicar un shell interactivo sin inicio de sesión.