2012-08-11 25 views

Respuesta

7

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.

+0

Gracias por la @ZyX intento, pero esto sólo muestra los valores booleanos. No muestra HISTSIZE y SAVEHIST, que son configuraciones enteras. –

+0

@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

+0

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

0

no sé sobre USTED ...(Me refiero, i do use .prezto), pero este es el "autocompletado" consigo al entrar setoptTAB ...

enter image description here

que me está diciendo cosas útiles como ..

-- zsh options (set) -- noaliases noautoresume nohashdirs nohistverify nonomatch ...

y

-- zsh options (unset) -- allexport cshjunkiehistory hashexecutablesonly kshglob nullglob singlecommand ...

4

Para mostrar el valor actual, tanto si ha definido o no (en cuyo caso se muestra el valor por defecto):

➜ ~ echo $SAVEHIST 
10000 
➜ ~ echo $HISTSIZE 
10000 
Cuestiones relacionadas