
Para habilitar uma opção, podemos usar setopt
. por exemplo:
setopt extended_glob
Como podemos verificar se uma opção está habilitada no momento?
Responder1
No zsh
, você pode usar setopt
para mostrar as opções habilitadas e unsetopt
quais não estão habilitadas:
$ 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
.
Responder2
Apenas use:
if [[ -o extended_glob ]]; then
echo it is set
fi
Isso também funciona bash
, mas apenas para as opções definidas por set -o
, não aquelas definidas por shopt
. zsh
tem apenas um conjunto de opções que podem ser definidas com setopt
ou set -o
.
Assim como com bash
(ou qualquer shell POSIX), você também pode fazer set -o
ou set +o
ver as configurações das opções atuais.
Responder3
Ozsh/parameter
módulo, que faz parte da distribuição padrão, fornece uma matriz associativaoptions
que 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 de extended_glob
), você também pode verificar$-
.
Observe que raramente é útil testar quais opções estão habilitadas. 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 olocal_options
opção. Você pode ligar para oemulate
embutido 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
}
Responder4
() {[[ -v argv[1] && -v options[$1] ]] && echo "option <$1> is $options[$1]" || echo "no such option <$1>" } <optname>
Com <optname>
dehttps://zsh.sourceforge.io/Doc/Release/Options.html
Exemplos:
() {[[ -v argv[1] && -v options[$1] ]] && echo "option <$1> is $options[$1]" || echo "no such option <$1>" } LOCAL_TRAPS
option <LOCAL_TRAPS> is off
() {[[ -v argv[1] && -v options[$1] ]] && echo "option <$1> is $options[$1]" || echo "no such option <$1>" } localtraps
option <localtraps> is off
() {[[ -v argv[1] && -v options[$1] ]] && echo "option <$1> is $options[$1]" || echo "no such option <$1>" } localtrap
no such option <localtrap>