Come ottenere una cronologia dei comandi infinita in bash?


54

Ho impostato export HISTSIZE=99999999999999ma è il modo migliore? Non so se potrebbe verificarsi un overflow. Sto cercando un modo testato e affidabile per rimuovere i limiti della cronologia dei comandi.


non esiste un meccanismo incorporato per fare ciò che conosco.

Sto solo commentando in modo che quando verrà data risposta, lo saprò anche io !!

2
debian-administration.org/articles/543 potrebbe essere una risposta migliore. Almeno, gestisce valori di infinito maggiori rispetto alla soluzione su superutente. :-)

Probabilmente potresti ridurlo a 9999 in pratica (o anche a 999; io uso 1000). Non ho mai trovato utile una storia più grande di circa 1000. Se voglio recuperare un comando per trasformarlo in uno script, di solito lo faccio bene con un migliaio di comandi. Altrimenti, può andare e non si fa nulla di male.
Jonathan Leffler,

@JonathanLeffler: il mio ha 1300 linee ed è il più piccolo possibile. Ctrl-R è molto utile.
l0b0

Risposte:


69

in effetti non è (ben) documentato e immagino che il 99% dell'utente bash su questo piano abbia impostato HISTSIZE su un numero elevato di veeery.

Nella storia della bash GNU viene gestita attraverso la potente libreria readline. La libreria ha la possibilità di limitare la dimensione della cronologia ("soffocare" nel gergo di readline) oppure no e bash semplicemente imposta la cronologia di readline su soffocata / non rettificata. Se guardi ad esempio GNU bash versione 4.2, file variabili.c, riga 4443, funzione void sv_histsize (char *) troverai questo commento (e l'intera soffocamento / slegamento nella funzione che segue):

/ * Cosa fare dopo la modifica delle variabili HISTSIZE o HISTFILESIZE.
Se esiste un valore per questo HISTSIZE (ed è numerico), quindi soffoca la cronologia. Altrimenti, se non esiste
alcun valore per questa variabile, annullare la cronologia. Se name è HISTFILESIZE e il suo valore è
numerico, tronca il file della cronologia in modo che non contenga più di così tante
righe. * /

Quindi questo dovrebbe fare il trucco:

export HISTSIZE=""

E anche questo (se ti senti provocatorio):

export HISTSIZE="GOTCHA"

Spero che sia di aiuto.


2
Che il Tux ti benedica :)
meeDamian,

17
Suggerisco: export HISTSIZE = "INFINITE"
AmanicA
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.