Come persistere nella storia di bash?


9

Non so se questo è previsto, ma la mia cronologia non viene salvata in tutte le sessioni. Questo per dire, se chiudo la finestra, quindi quando la apro di nuovo, la cronologia è vuota. Come posso insistere per tutte le sessioni?

Ecco gli output dei comandi che hai chiesto:

 set -o | grep history
history         on

$ grep -i history ~/.bashrc ~/.bash_profile ~/etc/bash.bashrc ~/etc/profile ~/.profile
/cygdrive/c/cygwin/home/car/.bashrc:# Make bash append rather than overwrite the history on disk
/cygdrive/c/cygwin/home/car/.bashrc:# History Options
/cygdrive/c/cygwin/home/car/.bashrc:# Don't put duplicate lines in the history.
/cygdrive/c/cygwin/home/car/.bashrc:# export PROMPT_COMMAND="history -a"
grep: /cygdrive/c/cygwin/home/car/etc/bash.bashrc: No such file or directory
grep: /cygdrive/c/cygwin/home/car/etc/profile: No such file or directory
/cygdrive/c/cygwin/home/car/.profile:if [ "x$HISTFILE" == "x/.bash_history" ]; then
/cygdrive/c/cygwin/home/car/.profile:  HISTFILE=$HOME/.bash_history

$ ls -la ~/ | grep history -> no output

$ echo $HISTFILE 
~/.bash_history
$ echo $HISTSIZE
500
$ echo $HISTFILESIZE 
500

Dopo le modifiche descritte nella risposta di seguito, ora ottengo:

grep -i hist .bashrc
# Make bash append rather than overwrite the history on disk
shopt -s histappend
# History Options
# Don't put duplicate lines in the history.
export HISTCONTROL="ignoredups"
# (added) A new shell gets the history lines from all previous shells
PROMPT_COMMAND='history -a'
# HISTIGNORE is a colon-delimited list of patterns which should be excluded.

Non riesco ancora a salvare una cronologia tra le sessioni. Ho letto le seguenti domande:

Nessuno sembrava affrontare il mio problema, inclusa la risposta di seguito della stessa persona a cui era stata data risposta alla loro domanda dal presunto duplicato.


Vedi anche la mia domanda qui e le domande a cui si collega. Prova i suggerimenti in essi contenuti e chiedi di nuovo se hai ancora problemi. In emantime, votando per chiudere come duplicato.
terdon,

modifica: set -o | la storia di grep mostra che la storia è attiva, echo $ HISTFILE mostra ~ / .bash_history, echo $ HISTSIZE e $ HISTFILESIZE mostrano entrambi 500. Ma la storia non è ancora persistente in tutte le sessioni
Car981,

$ HISTFILE è impostato su ~ / .bash_history, ma non esiste alcun file .bash_history in ~. Come può essere?
Car981,

Si prega di modificare la tua domanda per aggiungere nuove informazioni, piuttosto che commentare. Includere l'output di questi comandi: set -o | grep history, grep -i history ~/.bashrc ~/.bash_profile ~/etc/bash.bashrc ~/etc/profile ~/.profilee ls -la ~/ | grep history.
terdon,

Prova a impostare un file di storia specifica, aggiungere questa riga al vostro ~/.bashrc: export HISTFILE="~/history". Questo fa la differenza?
terdon,

Risposte:


7

Bene, sembra che il tuo ~/.bashrcnon abbia le opzioni necessarie. Assicurati che queste linee siano nel tuo ~/.bashrc:

# Make Bash append rather than overwrite the history on disk:
shopt -s histappend
# A new shell gets the history lines from all previous shells
PROMPT_COMMAND='history -a'
# Don't put duplicate lines in the history.
export HISTCONTROL=ignoredups

Non funziona ancora. Vedi modifica per un aggiornamento del nuovo risultato di output.
Car981,

7

OK ho scoperto cosa c'è che non va. Non riesco a chiudere la finestra, devo digitare 'exit' per chiuderlo con grazia.


Hai risposto alla tua domanda! Questo è fantastico, ma dovresti contrassegnarlo come tale, affinché gli altri sappiano che non ti aspetti ulteriori risposte.
Tiago,

Difficile dire che questa è una risposta accettabile: ho lo stesso problema e chiudere manualmente la finestra per salvare la cronologia non è una buona idea. Spesso chiudo la finestra del terminale in altri modi e non vorrei perderla.
Krzysztof Bociurko,
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.