Bash-Verlaufsnummer beginnt nicht bei 1?

7

Ich habe meine Bash-Eingabeaufforderung angepasst (ich bin unter OS X 10.7), als ich auf etwas Seltsames stieß. In meine Eingabeaufforderung habe ich! Eingeschlossen, die mir die Verlaufsnummer geben sollte. Die Verlaufsnummer beginnt jedoch immer bei 501 anstelle von 1. Dies gilt auch dann, wenn ich Terminal neu starte.

Ich kann anscheinend nichts in der Nähe finden. Ich habe mich gefragt, ob ihr einen Einblick bieten könnt.

itsachen
quelle

Antworten:

8

Von Mann schlagen:

   On startup, the history is initialized from the file named by the vari
   able HISTFILE (default ~/.bash_history).  The file named by  the  value
   of  HISTFILE  is  truncated,  if necessary, to contain no more than the
   number of lines specified by the value of HISTFILESIZE. [...] When an 
   interactive  shell  exits, the last $HISTSIZE lines are copied from the
   history list to $HISTFILE.

Während dieser Text ziemlich klar ist, lassen Sie uns ein wenig mit gutem Beispiel vorangehen (dies ist ein Deb-System, aber Bash ist Bash).

Mein aktueller Verlaufsstatus:

~$ set | grep HIST
HISTCONTROL=ignoredups:ignorespace
HISTFILE=/home/hmontoliu/.bash_history
HISTFILESIZE=2000
HISTSIZE=1000

Da HISTFILESIZE 2000 und HISTSIZE 1000 ist, sind nur die letzten 1000 Zeilen der HISTFILE verfügbar, sodass Sie den falschen Eindruck bekommen können, dass mein Verlauf bei 1000 beginnt.

~$ history | head -1
 1000  if i=1; then echo $i; done

~$ history | wc -l
1000

In der Tat speichert die HISTFILE die letzten 2000 Befehle:

 ~$ wc -l $HISTFILE
2000 /home/hmontoliu/.bash_history

Wenn Sie denken, dass es ärgerlich ist, können Sie HISTSIZE und HISTFILESIZE gleichsetzen

~$ echo "export HISTSIZE=$HISTFILESIZE" >> .bashrc
~$ bash -l
~$ history | head -1
    1  ls
~$ history | wc -l
2000
~$ set | grep HIST
HISTCONTROL=ignoredups:ignorespace
HISTFILE=/home/hmontoliu/.bash_history
HISTFILESIZE=2000
HISTSIZE=2000

Ein letzter Hinweis: Sie sollten ausführen help history, um die Aktionen anzuzeigen, die Sie mit Ihrem Verlauf ausführen können

hmontoliu
quelle
4

Die Antwort von hmontoliu ist ziemlich gut, dies ist nur eine TL; DR-Version.

Die Bash-Historie beginnt immer dort, wo Sie aufgehört haben. Es speichert einen semipermanenten Verlauf von Befehlen, die in einer Datei in Ihrem Home-Verzeichnis ausgeführt werden. Jedes Mal, wenn Sie eine Bash-Shell starten, wird diese Verlaufsdatei geladen, und Sie können zu Befehlen scrollen, die in früheren Sitzungen ausgeführt wurden. Wenn Sie 274 vorherige Befehle im Verlauf hatten, würde Ihre Befehlsverlaufsnummer in einer neuen Shell mit 275 beginnen.

Die Verlaufsdatei wird auf eine maximale Länge gekürzt, die von der Umgebungsvariablen angegeben wird $HISTFILESIZE. Sie haben anscheinend Ihre Verlaufsdatei auf maximal 500 Zeilen gekürzt, sodass jede neue Shell bei 501 beginnt. Die vorherigen Verlaufselemente sind eine Sammlung der letzten 500 Elemente aus vorherigen Shells.

Caleb
quelle
0

Der Verlauf wird standardmäßig in gespeichert ~/.bash_history. Der Verlauf der interaktiven Shell wird beim Beenden in der Datei gespeichert, abhängig von den Einstellungen in der Shell. Lesen Sie die Manpage für bash (1) und suchen Sie nach 'history'.

Arcege
quelle