Il problema è HISTFILESIZE imposta solo la cronologia massima memorizzata nel file all'avvio di una sessione. HISTSIZE è ciò che determina quante righe vengono salvate alla fine di una sessione. Se HISTFILESIZE è più grande del tuo HISTSIZE, non vedrai mai più del tuo HISTSIZE perché il file viene sovrascritto con i comandi HISTSIZE ( a meno che tu imposti la storia da aggiungere, ma questo è un argomento separato: cerca histappend
in comandi incorporati della shell per quello).
Questa è la ragione per cui non vedi alcun effetto. Con HISTSIZE al valore predefinito (probabilmente 500) il file della cronologia viene sempre sovrascritto dai più recenti comandi $ HISTSIZE. Qualunque cosa sia più vecchia (che potrebbe potenzialmente far crescere la lista oltre $ HISTSIZE) viene cancellata.
Per salvare 10 milioni di righe, devi solo impostare HISTSIZE in ~/.bash_profile
:
HISTSIZE=10000000
Per la maggior parte dei casi non è necessario impostare HISTFILESIZE indipendentemente da HISTSIZE.
HISTSIZE determina quante righe verranno scritte nel file di cronologia. L'elenco dei comandi viene troncato all'uscita, prima di scrivere nel file di cronologia, mantenendo N le righe più recenti. Per impostazione predefinita, questo elenco sovrascrive il file di cronologia.
HISTFILESIZE determina quanto può essere grande il file di cronologia (in linee). Il file viene troncato all'avvio, mantenendo N le righe più recenti. Inoltre, il file di cronologia viene potenzialmente troncato ogni volta che viene impostato HISTFILESIZE.
Infine, anche se sembra non documentato, BASH imposta HISTFILESIZE sulla base di HISTSIZE se HISTSIZE è impostato durante l'avvio. Ho provato questo su macOS e alcune varietà di Ubuntu, e il comportamento è coerente. Se imposti HISTSIZE in un file di avvio ( non tramite la riga di comando con qualsiasi mezzo), HISTFILESIZE verrà impostato per corrispondere. (Provalo tu stesso: imposta HISTSIZE su un valore arbitrariamente grande in .bash_profile, esci e inizia un nuovo terminale, quindi echo $HISTSIZE $HISTFILESIZE
e troverai le corrispondenze.)
Di conseguenza, non c'è motivo di toccare HISTFILESIZE a meno che non si desideri valori diversi e i casi di utilizzo con valori diversi siano rari (e in genere richiedono più impostazioni di personalizzazione della cronologia per ottenere qualcosa di utile).