Storia di Bash
Eventuali nuovi comandi che sono stati emessi nel terminale attivo possono essere aggiunti al .bash_history
file con il seguente comando:
history -a
L'unico concetto difficile da capire è che ogni terminale ha il suo elenco di cronologia bash (caricato dal.bash_history
file quando si apre il terminale)
Se si desidera estrarre qualsiasi nuova cronologia che è stata scritta da altri terminali durante la vita di questo terminale attivo, è possibile aggiungere il contenuto del .bash_history
file all'elenco della cronologia bash attivo
history -c;history -r
Questo cancellerà l'elenco storico corrente in modo da non ottenere un elenco ripetuto e aggiungere il file cronologico all'elenco (ora vuoto).
Soluzione
È possibile utilizzare la variabile bash PROMPT_COMMAND
per emettere un comando con ogni nuovo prompt (ogni volta che si preme invio nel terminale)
export PROMPT_COMMAND='history -a'
Ciò registrerà ogni comando nel file della cronologia mentre viene emesso.
Risultato
Ora qualsiasi nuovo terminale che aprirai avrà la storia di altri terminali senza doverlo fare exit
quegli altri terminali. Questo è il mio flusso di lavoro preferito.
Più precisione
Diciamo (per qualche motivo) che hai due terminali che stai usando contemporaneamente e vuoi che la cronologia rifletta tra entrambi per ogni nuovo comando.
export PROMPT_COMMAND='history -a;history -c;history -r'
Lo svantaggio principale qui è che potrebbe essere necessario premere Invio per rieseguire PROMPT_COMMAND per ottenere la cronologia più recente dal terminale opposto.
Puoi capire perché questa opzione più precisa è probabilmente eccessiva, ma funziona per quel caso d'uso.