No hay ninguna opción para obtener el valor predeterminado para una variable indefinida excepto para analizar la documentación o el código fuente.
HISTSIZE
y SAVEHIST
no son configuraciones, son variables especiales. Hay una manera de enumerar todas las variables, pero no conozco ninguna forma de enumerar aquellas que son especiales y se usan como configuraciones.
Para ayudarlo a enumerar los parámetros implementados como variables, existe el módulo zsh/parameter
(zmodload zsh/parameter
para cargarlo). Tiene una matriz asociativa $parameters
donde las claves son nombres de variables y los valores son descripciones de tipos variables. Tanto HISTSIZE
como SAVEHIST
aparecen allí como integer-special
. HISTCHARS
aparece allí como scalar-special
. Sin embargo, tenga en cuenta que RANDOM
aparece aquí como HISTSIZE
: integer-special
, por lo que no puede usar esto para obtener variables especiales utilizadas como opciones. Pero siempre puede usar la sección PARAMETERS USED BY THE SHELL
de man zshparam
.
No conozco ninguna opción que le permita determinar los valores predeterminados de esos parámetros, excepto la documentación de análisis o el código fuente.
# setopt | grep hist
nobanghist
extendedhistory
histfcntllock
histignorealldups
histignorespace
histnostore
histreduceblanks
histsavenodups
histverify
incappendhistory
Si quieres ver la configuración no predeterminada:
Si no hay argumentos, se suministran los nombres de todas las opciones establecidas actualmente se imprimen. El formulario se elige para minimizar las diferencias con respecto a las opciones predeterminadas para la emulación actual (la emulación predeterminada es nativa zsh, como se muestra en zshoptions (1)). Las opciones que están activadas de manera predeterminada para la emulación se muestran con el prefijo no solo si están desactivadas, mientras que otras opciones se muestran sin el prefijo no y solo si están activadas. Además de las opciones cambiadas del estado predeterminado por el usuario, cualquier opción activada automáticamente por el shell (por ejemplo, SHIN_STDIN o INTERACTIVE) mostrará en la lista. El formato se modifica adicionalmente mediante la opción KSH_OPTION_PRINT, sin embargo, la justificación para elegir opciones con o sin el prefijo n permanece igual en este caso.
También tiene sentido utilizar:
# unsetopt | grep hist
noappendhistory
cshjunkiehistory
histallowclobber
nohistbeep
histexpiredupsfirst
histfindnodups
histignoredups
histlexwords
histnofunctions
nohistsavebycopy
histsubstpattern
sharehistory
Si no se suministran argumentos, se imprimen los nombres de todas las opciones actualmente no se ha establecido.
O simplemente seguir la ayuda y utilizar
# setopt kshoptionprint
# setopt | grep hist
noappendhistory off
nobanghist on
cshjunkiehistory off
extendedhistory on
histallowclobber off
nohistbeep off
histexpiredupsfirst off
histfcntllock on
histfindnodups off
histignorealldups on
histignoredups off
histignorespace on
histlexwords off
histnofunctions off
histnostore on
histreduceblanks on
nohistsavebycopy off
histsavenodups on
histsubstpattern off
histverify on
incappendhistory on
sharehistory off
Tenga en cuenta que la salida de setopt
y unsetopt
partido cuando se utiliza la opción kshoptionprint
.
Gracias por la @ZyX intento, pero esto sólo muestra los valores booleanos. No muestra HISTSIZE y SAVEHIST, que son configuraciones enteras. –
@RobBednark No son configuraciones. Son variables especiales. Hay una manera de enumerar * todas * las variables, pero no sé cómo enumerar solo aquellas que son especiales y se usan como configuración. – ZyX
Y algunas variables especiales (aquellas que están definidas en un módulo C) no son totalmente enumerables (aparecen en la salida 'set', pero sin ningún valor). – ZyX