Basta executar:
$ shopt extglob
Ele retornará o status atual:
$ shopt extglob
extglob on
$ shopt -u extglob
$ shopt extglob
extglob off
Para mostrar todas as opções, basta executar:
$ shopt
Eu tenho um terminal bash aberto. Eu quero descobrir se a opção extglob está habilitada ou desabilitada nesta sessão, antes de alterar seu valor. Como posso fazer isso?
Use shopt -q :
shopt -q extglob && echo enable || echo disable
-q
option faz com que shopt
descarte a saída e retorne o status para indicar que as opções estão definidas ou não definidas.
Observe que shopt
relata somente opções que podem aparecer na variável BASHOPTS
, essas opções não são válidas para o comando set
builtin.
Para verificar as opções válidas para set
ou podem ser exibidas em SHELLOPTS
, use shopt -qo
:
$ bash --posix -c 'shopt -qo posix && echo enable || echo disable'
enable
Existem duas listas de opções no bash. Um para shopt
e um para set
.
A opção extglob
pertence à lista shopt
.
Seu valor pode ser impresso usando shopt extglob
ou shopt -p extglob
.
Uma opção como nounset
pertence à lista set
.
Seu valor pode ser impresso usando shopt -op nounset
ou shopt -o nounset
.
Para imprimir uma opção específica (sem alterá-la) para shopt, use shopt -p name
:
$ shopt -p xpg_echo
shopt -u xpg_echo
E para set
, use: shopt -po name
(sim, você pode usar shopt -op
para set
list).
$ shopt -po xtrace
set +o xtrace
Para listar todas as opções de shopt, use shopt
(ou reutilizável shopt -p
).
Também shopt -s
ou shopt -u
poderia ser usado.
A maneira de listar todas as opções para set
é com set -o
(related: set +o
).
Ou: shopt -o
é equivalente a set -o
e shopt -op
é a set +o
.
De LESS=+/'^ *shopt \[' man bash
:
With no options, or with the -p option, a list of all settable options is displayed, If either -s or -u is used with no optname arguments, the display is limited to those options which are set or unset, respectively.
De LESS=+/'^ *set \[' man bash
:
If -o is supplied with no option-name, the values of the current options are printed. If +o is supplied with no option-name, a series of set commands to recreate the current option settings is displayed on the standard output.
$ set -o
allexport off
braceexpand on
emacs on
errexit off
errtrace off
functrace off
hashall on
histexpand on
history on
ignoreeof off
interactive-comments on
keyword off
monitor on
noclobber off
noexec off
noglob off
nolog off
notify off
nounset off
onecmd off
physical off
pipefail off
posix off
privileged off
verbose off
vi off
xtrace off
e
$ shopt -sp
shopt -s checkwinsize
shopt -s cmdhist
shopt -s expand_aliases
shopt -s extglob
shopt -s extquote
shopt -s force_fignore
shopt -s histappend
shopt -s histverify
shopt -s interactive_comments
shopt -s progcomp
shopt -s promptvars
shopt -s sourcepath
Vale a pena mencionar sobre shopt -op
, que lista set
de opções:
$ shopt -op
set +o allexport
set -o braceexpand
set -o emacs
set +o errexit
set +o errtrace
set +o functrace
set -o hashall
set -o histexpand
set -o history
set +o ignoreeof
set -o interactive-comments
set +o keyword
set -o monitor
set +o noclobber
set +o noexec
set +o noglob
set +o nolog
set +o notify
set +o nounset
set +o onecmd
set +o physical
set +o pipefail
set +o posix
set +o privileged
set +o verbose
set +o vi
set +o xtrace