¿Cómo Zsh realiza un seguimiento del historial de comandos?
Veo dos archivos en mi directorio de inicio: .zhistory
y .zsh_history
. ¿Cuál es la diferencia entre ellos? Los archivos parecen contener todo mi historial. ¿Zsh sigue agregando líneas a una de ellas para siempre ? ¿No haría eso que la búsqueda en el historial sea demasiado lenta?
¿Puedo hacer que estos archivos sean enlaces simbólicos a otra ubicación? (por ejemplo, un repositorio git para realizar un seguimiento de los cambios en el historial)
zsh
command-history
Amelio Vazquez-Reina
fuente
fuente
~/.zshrc
y / o las/etc/zshrc
opciones descritas allí zsh.sourceforge.net/Guide/zshguide02.html#l17Respuestas:
Zsh almacena líneas de entrada (posiblemente con información de tiempo) en el archivo indicado por la variable
HISTFILE
. Debe ser un nombre de archivo absoluto (de lo contrario, se interpretará en relación con el directorio actual en ese momento).Zsh no tiene un valor predeterminado incorporado para
HISTFILE
. La distribución de zsh viene con un asistente de configuración para nuevos usuarios que tiene el valor~/.histfile
incorporado, por lo que esto es lo que los usuarios de zsh obtienen de manera predeterminada. Oh-my-zsh viene conHISTFILE=.zhistory
preajuste. Parece que probaste zsh tanto con la configuración predeterminada como con oh-my-zsh. Verifique su.zshrc
(o las fechas del archivo) para ver cuál está usando actualmente.La forma en que zsh abre el archivo y, por lo tanto, qué sucede si se trata de un enlace simbólico, depende de varias opciones.
append_history
(configurada de manera predeterminada),inc_append_history
oshare_history
está configurada, o cuando el historial se guarda explícitamente confc -AI
, zsh se agrega al archivo existente.Tenga en cuenta que incluso con estas configuraciones, zsh ocasionalmente sobrescribe el archivo como se describe a continuación para recortarlo a su tamaño.
hist_save_by_copy
está establecida (se establece de forma predeterminada desde zsh 5.0, pero no existe en 4.2), zsh escribe un archivo temporal y luego lo mueve en su lugar cuando se completa. En este caso, si el archivo de historial era un enlace simbólico, el nuevo archivo reemplaza al enlace simbólico.En lugar de apuntar zsh a un enlace simbólico, configúrelo
HISTFILE
donde quiera que esté el archivo del historial.La cantidad de líneas del historial que se guardan se configura a través de las variables
HISTSIZE
ySAVEHIST
.HISTSIZE
es el número máximo de líneas que se mantienen en una sesión ySAVEHIST
es el número máximo de líneas que se mantienen en el archivo de historial.Para guardar algo de historial, debe establecer ambos
HISTFILE
ySAVEHIST
, como el valor predeterminadoSAVEHIST
es 0. También puede aumentarHISTSIZE
(a partir de zsh 5.0, el valor predeterminado es solo 30).fuente