Onde o "shopt extglob" do bash está ativado para meu shell interativo?

Onde o "shopt extglob" do bash está ativado para meu shell interativo?

Vejo que o extglob está ativado, mas gostaria de saber onde está definido.

$ shopt extglob
extglob         on
$

Não encontrei nesses arquivos.

  • ~/.bashrc
  • ~/.bash_profile
  • ~/.profile
  • /etc/bashrc(arquivo inexistente)
  • /etc/bash.bashrc

Responder1

Na minha VM 14.04, encontrei em /usr/share/bash-completion/bash_completion:

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

Isto é fornecido por ~/.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

Isso pode ser descoberto executando bash -x, que mostra todos os arquivos de inicialização de origem e seus comandos. Execute script -c "bash -x"e, em seguida exit, no novo shell interativo e examine a typescriptsaída do arquivo do script:

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

...

++ shopt -s extglob progcomp

Os +'s indicam o nível do arquivo de origem, portanto, quando olhamos um nível acima do shoptcomando, vemos /usr/share/bash-completion/bash_completionque é de origem.

Responder2

Está definido no /usr/share/bash-completion/bash_completionarquivo:

shopt -s extglob progcomp

O ~/.bashrcarquivo tem o seguinte, se posixa opção não estiver definida:

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

Isso significa que se o arquivo /usr/share/bash-completion/bash_completionexistir, ele será a fonte do arquivo.

Como esse arquivo contém a linha para set extglob, ele será definido ao declarar um shell interativo sem login.

informação relacionada