Respostas:
Em zsh, você pode usar setoptpara mostrar as opções ativadas e unsetoptmostrar as que não estão ativadas:
$ setopt
autocd
histignorealldups
interactive
monitor
sharehistory
shinstdin
zle
$ unsetopt
noaliases
allexport
noalwayslastprompt
alwaystoend
noappendhistory
autocd
autocontinue
noautolist
noautomenu
autonamedirs
.....
Em bash, você pode usar shopt -p.
set -opara a lista COMPLETA.
Apenas use:
[[ -o extended_glob ]]
Isso também funciona bash, mas apenas para as opções definidas por set -o, não as definidas por shopt. zshpossui apenas um conjunto de opções que podem ser definidas com setoptou set -o.
Assim como com bash(ou qualquer shell POSIX), você também pode fazer set -oou set +over as configurações atuais das opções.
O zsh/parametermódulo, que faz parte da distribuição padrão, fornece uma matriz associativa optionsque indica quais opções estão ativadas.
if [[ $options[extended_glob] = on ]]; then …
Para opções que possuem um alias de uma letra (o que não é o caso extended_glob), você também pode verificar $-.
Observe que raramente é útil testar quais opções estão ativadas. Se você precisar ativar ou desativar uma opção em um trecho de código, coloque esse código em uma função e defina a local_optionsopção. Você pode chamar o emulatebuilt-in para redefinir as opções para um estado padrão.
my_function () {
setopt extended_glob local_options
}
another_function () {
emulate -L zsh
setopt extended_glob
}
setoptapenas imprime as opções não ativadas por padrão para esse modo de emulação.