¿Cómo se comparte el historial entre terminales en zsh?

29

¿Cómo se puede lograr para que cada comando que se ingresa sea visible en el historial de cada terminal abierta?

Cuando se abren múltiples terminales, el historial no se comparte, es decir, lo que ingresó en el historial de un terminal no se muestra en otro. Piense en una alternativa a Bash PROMPT_COMMAND="history -a"(que guarda el historial antes de que se muestre el mensaje).

MJB
fuente
Ver también relacionados y Q avanzada y respuestas: superuser.com/questions/446594/...
lumbric

Respuestas:

36

Serían aplicables las siguientes opciones:

  • Para guardar cada comando antes de ejecutarlo (esto es diferente del historial de bash, una solución):

    setopt inc_append_history
    
  • Para leer el archivo de historial cada vez que se solicita el historial, así como la funcionalidad de inc_append_history:

    setopt share_history
    

Estos se pueden configurar en su .zshrcarchivo.

Relacionado con bash:

MJB
fuente
44
"SHARE_HISTORY: esta opción importa nuevos comandos del archivo de historial y también hace que los comandos escritos se agreguen al archivo de historial (este último es como especificar INC_APPEND_HISTORY, que debería desactivarse si esta opción está vigente )". (Por énfasis manual agregado), es decir, solo la opción INC_APPEND_HISTORY hará lo que desee.
artfulrobot
3
En realidad, solo la opción SHARE_HISTORY solo hará lo que quieras. La frase "que debe desactivarse si esta opción está vigente" se traduce como "[INC_APPEND_HISTORY] debe desactivarse si la opción [SHARE_HISTORY] está vigente". He probado esto en zsh 5.1.1 en Ubuntu Xenial.
Linus Arver
1
@opert es correcto: setopt share_historyes lo que logrará el resultado deseado. @MJB ¿estaría dispuesto a editar su respuesta para eliminar la mención de setopt inc_append_history? Oscurece la respuesta real.
bonh
Los nombres son sensibles a mayúsculas y subrayados son ignorados por lo que sisetopt | grep histobtendráincappendhistoryysharehistory.
Pablo A
4

Si usa el impresionante OhMyZSH de Robby Russell, se encargará de esto y más.

Ver https://github.com/robbyrussell/oh-my-zsh/blob/master/lib/history.zsh

Eso incluye setopt inc_append_history.

james_womack
fuente
Es suyo / suyo / its. Importante para el trabajo de shell.
Cees Timmerman
@CeesTimmerman arreglado, gracias. Es importante para la comunicación en general, creo. ¿Qué quisiste decir con "Importante para el trabajo de shell"?
james_womack
1
Un error tipográfico en el shell puede dañar todo el sistema.
Cees Timmerman