Risposte:
Devi anche impostare HISTSIZE=10000000
.
HISTFILESIZE
determina il numero di righe da conservare nel file cronologico mentre HISTSIZE
determina il numero di righe da conservare in memoria. Entrambi predefiniti a500
Eseguire echo $HISTFILESIZE $HISTSIZE
prima di apportare la modifica e poi di nuovo dopo. Dovresti vedere 10000000 500
prima poi 10000000 10000000
dopo.
È necessario esportare HISTSIZE
e HISTFILESIZE
le variabili di ambiente nel ~/.bash_profile
file.
Aggiungi le seguenti righe nel tuo ~/.bash_profile
:
# history size
export HISTFILESIZE=1000000
export HISTSIZE=1000000
Tutto quello che devi fare è impostare HISTSIZE
nel tuo profilo bash ( ~/.bash_profile
). Puoi lasciare HISTFILESIZE
non impostato . Ciò configurerà sia la cronologia in memoria che la cronologia basata su file.
# Saves 10 million lines in memory and in the bash history file.
HISTSIZE=10000000
Il problema è HISTFILESIZE imposta solo la cronologia massima memorizzata su file all'avvio di una sessione. HISTSIZE è ciò che determina quante righe vengono salvate alla fine di una sessione. Se HISTFILESIZE è più grande di HISTSIZE, non vedrai mai più di HISTSIZE perché il file viene sovrascritto con i comandi HISTSIZE (a meno che tu non imposti la cronologia da aggiungere, ma questo è un argomento separato: cerca histappend
nei comandi integrati della shell per quello) .
Questo è il motivo per cui non vedi alcun effetto. Con HISTSIZE predefinito (probabilmente 500) il tuo file cronologico viene sempre sovrascritto dai più recenti comandi $ HISTSIZE. Tutto ciò che è più vecchio (che potrebbe potenzialmente far crescere l'elenco oltre $ HISTSIZE) viene cancellato.
Nella maggior parte dei casi non è necessario impostare HISTFILESIZE indipendentemente da HISTSIZE.
HISTSIZE determina quante righe verranno scritte nel file della cronologia. L'elenco dei comandi viene troncato all'uscita, prima di scrivere nel file della cronologia, mantenendo N le righe più recenti. Per impostazione predefinita, questo elenco sovrascrive il file cronologico.
HISTFILESIZE determina la dimensione del file della cronologia (in righe). Il file viene troncato all'avvio, mantenendo N le righe più recenti. Inoltre, il file cronologico viene potenzialmente troncato ogni volta che viene impostato HISTFILESIZE.
Infine, sebbene sembri non documentato, BASH imposta HISTFILESIZE in base a HISTSIZE se HISTSIZE è impostato all'avvio. L'ho provato 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 in alcun modo), HISTFILESIZE verrà impostato in modo che corrisponda. (Provalo tu stesso: imposta HISTSIZE su un valore arbitrariamente grande in .bash_profile, esci e avvia un nuovo terminale, quindi echo $HISTSIZE $HISTFILESIZE
li troverai corrispondenti.)
Di conseguenza, non c'è motivo di toccare HISTFILESIZE a meno che non si desideri valori diversi e i casi d'uso con valori diversi sono rari (e in genere comportano più impostazioni di personalizzazione della cronologia per ottenere qualcosa di utile).