2012-01-27 10 views
48

Ho notato che quando si apre .bash_history che contiene solo le voci dalla mia sessione precedente, sembra che la sessione corrente viene aggiunto solo in uscita. C'è un modo per impedire il salvataggio della sessione corrente? Anche l'arresto anomalo di bash è un'opzione se si sa come farlo. Ho scoperto che posso eseguire il processo kill -9, ma se c'è un modo migliore mi piacerebbe saperlo.Non salvare corrente sessione di bash alla storia

+2

Un modo per farlo è usare 'kill -9 $$'. Inviando il tuo terminale a SIGKILL, non ha la possibilità di scrivere sul file di cronologia. – jordanm

risposta

55

forse più elegante di schiantarsi bash potrebbe essere quella di utilizzare il comando history -c per cancellare la cronologia della sessione corrente. Quindi, non c'è nulla da salvare (si cancella anche dalla storia).

+3

Questo avrebbe anche danneggiato i contenuti di histfile. –

+1

Non fa per me. Forse è cambiato a un certo punto? Sto usando bash 4.2. – FatalError

+13

sì, usa la storia per 3.2 e non per 4.2 –

53

disinserito il $HISTFILE variabile

$ unset HISTFILE 

Se HISTFILE non è impostata, o se il file la storia è scrivibile, la storia non viene salvata.
http://www.faqs.org/docs/bashman/bashref_106.html

+0

Grazie, questo è positivo per le versioni di Bash che inviano l'intera storia su -c. – dotancohen

+0

non ha funzionato per me – RSFalcon7

+0

Qual è il vantaggio di questo vs 'history -r', perché con questo perderai tutto ciò che hai fatto dal tuo accesso. Ma con questo lo perderai e tutto ciò che sei _going_ da fare nella sessione. – Pylinux

5

che dovrebbe fare:

HISTFILE= 

disinserire il HISTFILE.

+0

Grazie, funziona e lo userò per i vecchi Bash su alcuni server obsoleti. – dotancohen

+0

non ha funzionato per me – RSFalcon7

+0

Si potrebbe anche provare: unset HISTFILE lo fa di certo il trucco se non si desidera qualcosa di questa sessione di essere nella storia. Altrimenti vedi il mio commento sopra su HISTCONTROL. – th3penguinwhisperer

10

C'è un'altra opzione, simile a history -c, ma che non cancella nulla precedente alla sessione corrente.

È history -r, che ricarica la storia dal HISTFILE, come se hai appena effettuato l'accesso.

Non so se questo funziona o è disponibile in qualsiasi versione precedente bash 4.3.11, ma io anche se sarebbe utile includerlo nell'elenco.

Ecco un esempio che mostra la differenza tra questo comando e l'-c uno:

[email protected]:~$ # I Just logged in 
[email protected]:~$ history | tail -n6 # this shows commands from the previous session, which ends at item 4682 as well as from the current one 
4679 2014-08-23 17:15:29 # Previous session 
4680 2014-08-23 17:15:33 # Still the previous session 
4681 2014-08-23 17:15:37 # note the datetime 
4682 2014-08-23 17:15:44 exit 
4683 2014-08-23 17:17:25 # I Just logged in 
4684 2014-08-23 17:19:54 history | tail -n6 # this shows the last command, and the ones from the previous session 
[email protected]:~$ # This is a secret command, so I need to remove the traces of this session 
[email protected]:~$ history -r 
[email protected]:~$ history | tail -n5 # Note that I went back to item 4682, and there are no traces of history -r command 
6242 2014-08-23 17:15:29 # Previous session 
6243 2014-08-23 17:15:33 # Still the previous session 
6244 2014-08-23 17:15:37 # note the datetime 
6245 2014-08-23 17:15:44 exit 
6246 2014-08-23 17:22:26 history | tail -n5 # Note that I went back to item 4682, and there are no traces of history -r command 
[email protected]:~$ history -C# instead if I issue history -c 
[email protected]:~$ history # everything disappears 
5248 2014-08-23 17:23:13 history # everything disappears 
[email protected]:~$ 
+0

Su bash 4.3.39, 'history -r' Aggiunge il contenuto del file di cronologia all'elenco di cronologia corrente. Non so se è quello che stava facendo quando hai postato la tua risposta ... I numeri di cronologia saltano molto tra i tuoi comandi, ma non raddoppiano. – user1902689

+0

Sei sicuro che li aggiunge? In bash 4.3.11, i numeri saltano in avanti perché il contatore non viene ripristinato, ma in realtà non aggiunge i contenuti a quelli originali. Infatti, se esci e accedi, i numeri tornano al loro stato originale. –

4

i seguenti lavori per me.

export HISTFILE=/dev/null 

Si noti che ha uno spazio di fronte. La maggior parte delle distribuzioni moderne non aggiungerebbe comandi inseriti dopo uno spazio in cui bash cronologia. Ciò impedirà anche a quella riga di apparire nella tua cronologia.

7

So che questo è un thread precedente. Volevo solo aggiungere questo per il completamento: controllo

Se non si desidera solo comandi specifici per essere salvato se la variabile HISTCONTROL è impostata: HISTCONTROL = ignoreboth o HISTCONTROL = ignorespace

Ogni comando che inizia con un leader lo spazio non verrà inserito nella storia.

Solo i miei 2 centesimi.

+0

Molto, grazie pinguino! – dotancohen

+0

È bello! –

Problemi correlati