Ich sehe, dass Extglob aktiviert ist, aber ich möchte wissen, wo dies eingestellt ist.
$ shopt extglob
extglob on
$
Habe es in diesen Dateien nicht gefunden.
~/.bashrc
~/.bash_profile
~/.profile
/etc/bashrc
(keine solche Datei)/etc/bash.bashrc
Antwort1
Auf meiner 14.04-VM habe ich es in folgendem gefunden /usr/share/bash-completion/bash_completion
:
ubuntu@ubuntu:~$ grep extglob /usr/share/bash-completion/bash_completion
shopt -s extglob progcomp
ubuntu@ubuntu:~$
Quelle ~/.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
Dies lässt sich herausfinden bash -x
, indem Sie ausführen. Dadurch werden alle Startdateien und deren Befehle angezeigt. Führen Sie aus script -c "bash -x"
, dann exit
in der neuen interaktiven Shell, und untersuchen Sie anschließend die typescript
Dateiausgabe des Skripts:
+ . /usr/share/bash-completion/bash_completion
...
++ shopt -s extglob progcomp
Die +
's geben die Ebene der Quelldatei an. Wenn wir also vom shopt
Befehl aus eine Ebene nach oben schauen, sehen wir, /usr/share/bash-completion/bash_completion
dass 's als Quelle verwendet wird.
Antwort2
Es wird unter /usr/share/bash-completion/bash_completion
der Datei festgelegt:
shopt -s extglob progcomp
Die ~/.bashrc
Datei enthält Folgendes. Wenn posix
die Option nicht gesetzt ist, dann:
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
Dies bedeutet, dass die Datei als /usr/share/bash-completion/bash_completion
Quelle angegeben wird, wenn sie existiert.
Da diese Datei die festzulegende Zeile enthält extglob
, wird sie beim Starten einer interaktiven Shell ohne Anmeldung festgelegt.