Come condividi la cronologia tra i terminali in zsh?


29

Come può essere realizzato in modo tale che ogni comando inserito sia visibile nella cronologia di ogni terminale aperto?

Quando sono aperti più terminali, la cronologia non viene condivisa, ovvero ciò che è stato inserito nella cronologia di un terminale, non viene visualizzato in un altro. Pensa a un'alternativa a Bash PROMPT_COMMAND="history -a"(che salva la cronologia prima che il prompt venga visualizzato).


Vedi anche Domande e
risposte

Risposte:


36

Saranno applicabili le seguenti opzioni:

  • Per salvare ogni comando prima che venga eseguito (questo è diverso dalla storia di bash -una soluzione):

    setopt inc_append_history
    
  • Per leggere il file della cronologia ogni volta che viene richiamata la cronologia, nonché le funzionalità da inc_append_history:

    setopt share_history
    

Questi possono essere impostati nel tuo .zshrcfile.

Correlato a bash:


4
"SHARE_HISTORY: questa opzione importa sia i nuovi comandi dal file di cronologia, sia fa sì che i tuoi comandi digitati vengano aggiunti al file di cronologia (quest'ultimo è come specificare INC_APPEND_HISTORY, che dovrebbe essere disattivato se questa opzione è attiva )." ( Dall'enfasi manuale aggiunta), cioè solo l'opzione INC_APPEND_HISTORY farà ciò che desideri.
artfulrobot,

3
In realtà, solo l'opzione SHARE_HISTORY farà solo quello che vuoi. La frase "che dovrebbe essere disattivata se questa opzione è attiva" si traduce in "[INC_APPEND_HISTORY] dovrebbe essere disattivata se l'opzione [SHARE_HISTORY] è attiva". Ho provato questo su zsh 5.1.1 su Ubuntu Xenial.
Linus Arver,

1
@opert è corretto: setopt share_historyè ciò che otterrà il risultato desiderato. @MJB saresti disposto a modificare la tua risposta per rimuovere la menzione di setopt inc_append_history? Oscura la risposta effettiva.
Bonh,


4

Se usi il fantastico OhMyZSH di Robby Russell, si occuperà di questo e altro.

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

Questo include setopt inc_append_history.


È suo. Importante per il lavoro di shell.
Cees Timmerman,

@CeesTimmerman riparato, grazie. Credo sia importante per la comunicazione in generale. Cosa intendevi con "Importante per il lavoro di shell"?
james_womack,

1
Un errore di battitura nella shell può danneggiare l'intero sistema.
Cees Timmerman,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.