Risposte:
HISTSIZE
è il numero di righe o comandi archiviati in memoria in un elenco cronologico mentre la sessione bash è in corso.
HISTFILESIZE
è il numero di righe o comandi che (a) sono consentiti nel file della cronologia al momento dell'avvio di una sessione e (b) sono memorizzati nel file della cronologia alla fine della sessione bash per l'uso in sessioni future.
Notare la distinzione tra file
: su disco - e list
: in memoria.
Tutte le informazioni sopra + alcuni esempi:
Esempio 1 :
HISTFILESIZE=10
eHISTSIZE=10
histappend
non sia abilitato, i comandi da 41 a 50 vengono salvati nel tuo HISTFILE che ora ha i 10 comandi che ha tenuto all'inizio più i 10 nuovi comandi scritti.Esempio 2 :
HISTFILESIZE=10
eHISTSIZE=5
histappend
non sia abilitato, i comandi da 46 a 50 vengono salvati nel tuo HISTFILE che ora ha i 10 comandi che ha tenuto all'inizio più i 5 nuovi comandi scritti.Esempio 3 :
HISTFILESIZE=5
eHISTSIZE=10
histappend
non sia abilitato, i comandi da 41 a 50 vengono salvati nel tuo HISTFILE che ora ha i 5 comandi che aveva all'inizio all'inizio più i 10 nuovi comandi scritti.Informazioni da elixir_sinari :
Il "file" della cronologia non viene aggiornato durante la digitazione dei comandi. I comandi vengono memorizzati in un "elenco" separatamente (accessibile dal comando cronologia). Il numero di questi comandi memorizzati è controllato dal valore HISTSIZE. Quando la shell (interattiva) termina, le ultime righe di $ HISTSIZE vengono copiate / aggiunte a $ HISTFILE da tale "elenco". Se è impostato HISTFILESIZE, dopo questa operazione, si assicura che solo $ HISTFILESIZE (l'ultima) esistano in $ HISTFILE. E quando la shell inizia, la "lista" viene inizializzata da $ HISTFILE fino a un massimo di $ HISTSIZE comandi.
E dalla man bash
pagina:
Il valore della variabile HISTSIZE viene utilizzato come numero di comandi da salvare in un elenco cronologico. Il testo degli ultimi comandi HISTSIZE (impostazione predefinita 500) viene salvato. (...)
All'avvio, la cronologia viene inizializzata dal file denominato dalla variabile HISTFILE (default ~ / .bash_history). Il file indicato dal valore di HISTFILE viene troncato, se necessario, per contenere non più del numero di righe specificato dal valore di HISTFILESIZE. (...) Quando esce una shell interattiva, le ultime righe di $ HISTSIZE vengono copiate dall'elenco della cronologia in $ HISTFILE. Se l'opzione shell histappend è abilitata (vedere la descrizione di shopt sotto COMANDI INCORPORATI SHELL di seguito), le righe vengono aggiunte al file della cronologia, altrimenti il file della cronologia viene sovrascritto. Se HISTFILE non è impostato o se il file della cronologia non è scrivibile, la cronologia non viene salvata. (...) Dopo aver salvato la cronologia, il file della cronologia viene troncato per contenere non più di righe HISTFILESIZE. Se HISTFILESIZE non è impostato,
Basandosi su ciò che Arturomp ha detto e nel tentativo di renderlo un po 'più chiaro.
Supponendo che tu abbia 2000 anni di storia ...
~$ history
1 sdf
2 fghdfgjf
3 fghfghdf
.. ..
2027 78
2028 57
2029 yu45u
Puoi ridurre ciò che ti viene mostrato HISTSIZE
~$ HISTSIZE=5
~$ history
2026 546
2027 78
2028 56
2029 yu45u
2030 HISTSIZE=5
Ora, indipendentemente da quanti comandi digiti, verranno registrati solo gli ultimi 5.
~$ ABC
~$ GGH
~$ GSDHFG
~$ JFDR
~$ ABSDDS
~$ AHFGHFD
<close terminal>
<open new terminal>
~$ history
1 sdf
2 fghdfgjf
3 fghfghdf
.. ..
2028 56
2029 yu45u
2030 HISTSIZE=5
2031 GGH
2032 GSDHFG
2033 JFDR
2034 ABSDDS
2035 AHFGHFD
Possiamo vedere chiaramente che il nostro primo comando ("ABC") non è nella storia poiché sono stati registrati solo gli ultimi 5 comandi.
Ora, la cronologia totale è memorizzata in un file ( .bash_history
) e puoi modificare la durata di questo file con HISTFILESIZE
. Ad esempio con a 2033
HISTFILESIZE
, nel mio caso avrei questo:
~$ history
1 fghfghdf
2 gegege
3 gege
.. ..
2028 HISTSIZE=5
2029 GGH
2030 GSDHFG
2031 JFDR
2032 ABSDDS
2033 AHFGHFD
HISTSIZE=-1
e HISTFILESIZE=-1
.
bash
pagina man dice: Non-numeric values and numeric values less than zero inhibit truncation
ma poi non ho avuto il coraggio di verificare se questo è vero perché non voglio perdere la mia storia :-)
HISTSIZE='INFINITY'
e HISTFILESIZE='ANDBEYOND'
. Poiché sono non numerici, salvano tutto. Grazie per il consiglio!