Respuestas:
En zsh, puede usar setoptpara mostrar las opciones habilitadas y unsetoptpara mostrar cuáles no están habilitadas:
$ setopt
autocd
histignorealldups
interactive
monitor
sharehistory
shinstdin
zle
$ unsetopt
noaliases
allexport
noalwayslastprompt
alwaystoend
noappendhistory
autocd
autocontinue
noautolist
noautomenu
autonamedirs
.....
En bash, puedes usar shopt -p.
set -opara la lista COMPLETA.
Solo usa:
[[ -o extended_glob ]]
Eso también funciona bash, pero solo para las opciones establecidas por set -o, no las establecidas por shopt. zshtiene solo un conjunto de opciones que se pueden configurar con setopto set -o.
Al igual que con bash(o cualquier shell POSIX), también puede hacer set -oo set +over la configuración de opciones actual.
El zsh/parametermódulo, que forma parte de la distribución predeterminada, proporciona una matriz asociativa optionsque indica qué opciones están activadas.
if [[ $options[extended_glob] = on ]]; then …
Para las opciones que tienen un alias de una sola letra (que no es el caso de extended_glob), también puede verificar $-.
Tenga en cuenta que rara vez es útil probar qué opciones están habilitadas. Si necesita habilitar o deshabilitar una opción en un fragmento de código, coloque ese código en una función y configure la local_optionsopción. Puede llamar al emulatebuiltin para restablecer las opciones a un estado predeterminado.
my_function () {
setopt extended_glob local_options
}
another_function () {
emulate -L zsh
setopt extended_glob
}
setoptsolo imprime las opciones no habilitadas por defecto para ese modo de emulación.