
Para habilitar una opción, podemos usar setopt
. p.ej:
setopt extended_glob
¿Cómo podemos verificar si una opción está actualmente habilitada?
Respuesta1
En zsh
, puedes usar setopt
para mostrar las opciones habilitadas y unsetopt
para mostrar las que 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
.
Respuesta2
Solo usa:
if [[ -o extended_glob ]]; then
echo it is set
fi
Eso también funciona en bash
, pero sólo para las opciones establecidas por set -o
, no para las establecidas por shopt
. zsh
tiene sólo un conjunto de opciones que se pueden configurar con setopt
o set -o
.
Al igual que con bash
(o cualquier shell POSIX), también puede hacer set -o
o set +o
ver la configuración de opciones actual.
Respuesta3
Elzsh/parameter
El módulo, que forma parte de la distribución predeterminada, proporciona una matriz asociativa.options
eso 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 puedes marcar$-
.
Tenga en cuenta que rara vez resulta ú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 ellocal_options
opción. Puedes llamar alemulate
incorporado para restablecer las opciones a un estado predeterminado.
my_function () {
setopt extended_glob local_options
}
another_function () {
emulate -L zsh
setopt extended_glob
}
Respuesta4
() {[[ -v argv[1] && -v options[$1] ]] && echo "option <$1> is $options[$1]" || echo "no such option <$1>" } <optname>
con <optname>
dehttps://zsh.sourceforge.io/Doc/Release/Options.html
Ejemplos:
() {[[ -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>