Impossibile aumentare la lunghezza della cronologia della shell bash di Mac OSX

16

Ho impostato ~ / .bash_profile qualche tempo fa per avere più di 500 righe di lunghezza ma sembra che il sistema non riesca a catturarlo.

Sai perché?

> nano -w ~/.bash_profile
export CLICOLOR=1
export LSCOLORS=GxFxCxDxBxegedabagaced
HISTFILESIZE=10000000

> history | wc -l
     500
    
posta biotech 20.07.2016 - 11:51
fonte

3 risposte

26

Devi anche impostare HISTSIZE=10000000 .

HISTFILESIZE determina il numero di righe da conservare nel file della cronologia mentre HISTSIZE determina il numero di righe da conservare in memoria. Entrambe le impostazioni predefinite sono 500

Esegui echo $HISTFILESIZE $HISTSIZE prima di apportare la modifica e poi di nuovo dopo. Dovresti vedere 10000000 500 prima poi 10000000 10000000 dopo.

    
risposta data 20.07.2016 - 12:12
fonte
5

Devi esportare HISTSIZE e HISTFILESIZE variabili di ambiente nel tuo file ~/.bash_profile .

Aggiungi le seguenti righe in ~/.bash_profile :

# history size
export HISTFILESIZE=1000000
export HISTSIZE=1000000
    
risposta data 05.04.2018 - 10:37
fonte
2

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).

    
risposta data 10.10.2018 - 00:03
fonte

Leggi altre domande sui tag