Historial de comandos en zsh

32

Actualmente tengo zsh configurado de tal manera que el historial de comandos se comparte entre todas las sesiones de inmediato.

Digamos que tengo un emulador de terminal abierto con dos pestañas, cada una con una sesión zsh, A1 y A2. Si ingreso ls -la en A1, y luego voy a A2 y presiono la tecla de flecha hacia arriba, veré ls -la en el símbolo del sistema.

Me gustaría cambiarlo para que las sesiones no compartan el historial de comandos entre sí, aunque cuando comience una nueva sesión, obtiene todo el historial anterior de todas las sesiones anteriores.

Art
fuente
Hago eso regularmente. Sin embargo, hay muchas preguntas que aún no tienen una respuesta satisfactoria.
Arte el
Gran pregunta y respuestas útiles. Pensé que esto era algo iTerm2 específicamente. Esperemos que este comentario sea de esta manera si hacen la misma suposición.
Alan H.

Respuestas:

40

Probablemente te hayas INC_APPEND_HISTORYpuesto.

La INC_APPEND_HISTORYopción, desde man zshoptions:

Esta opción funciona como APPEND_HISTORY, excepto que se agregan nuevas líneas de historial al $ HISTFILE de forma incremental (tan pronto como se ingresan), en lugar de esperar hasta que salga el shell.

La opción que quieres es APPEND_HISTORY:

APPEND_HISTORY Si esto está configurado, las sesiones zsh agregarán su lista de historial al archivo de historial, en lugar de reemplazarlo. Por lo tanto, varias sesiones zsh paralelas tendrán todas las nuevas entradas de sus listas de historial agregadas al archivo de historial, en el orden en que salen. El archivo se reescribirá periódicamente para recortarlo cuando el número de líneas crezca un 20% más allá del valor especificado por $ SAVEHIST (consulte también la opción HIST SAVE BY COPY).

Puede leer sobre estas opciones en el man zshoptions, man zshallo en línea aquí .

Para configurarlos, en su ~/.zshrco similar, debe tener:

setopt APPEND_HISTORY

Tenga en cuenta que, si está usando oh-my-zsh de forma predeterminada, creo que INC_APPEND_HISTORYse usa. No estoy 100% seguro de qué manera se cargan las cosas, pero si la oh-my-zshopción anula la que ha configurado ~/.zshrc, puede jugar con ella en~/.oh-my-zsh/lib/history.zsh

simont
fuente
echo unsetopt INC_APPEND_HISTORY >~/.oh-my-zsh/custom/history.zsh
youfu
¿Cómo se puede configurar iTerm2 para restaurar el historial individual de pestañas después de un reinicio (para zsh y oh-my-zsh)?
Googol
10

Para agregar a la respuesta aceptada, si usa oh-my-zsh, probablemente tenga la SHARE_HISTORYopción habilitada de forma predeterminada.

Para lograr la separación entre los shells en ejecución + el historial completo combinado en un terminal recién abierto, debe comentar o eliminar la siguiente línea:

setopt share_history # share command history data

desde ~/.oh-my-zsh/lib/history.zsh

siergiej
fuente
En mi caso, la ruta del archivo history.zsh es~/.antigen/repos/https-COLON--SLASH--SLASH-github.com-SLASH-robbyrussell-SLASH-oh-my-zsh.git/lib/history.zsh
suzanshakya
3
Otra forma de hacerlo es cargar unsetopt share_historyel .zshrcafter oh-my-zsh. Documentado aquí .
contrarrestar el
gracias @counterbeing que lo fijó para mí - que deben hacer que una respuesta por separado, que es la forma más fácil de solucionarlo
jcollum