Wie kann man die Bash-Geschichte fortsetzen?

9

Ich weiß nicht, ob dies erwartet wird, aber mein Verlauf wird nicht über Sitzungen hinweg gespeichert. Das heißt, wenn ich das Fenster schließe und dann es wieder öffne, ist der Verlauf leer. Wie kann ich es über Sitzungen hinweg beibehalten?

Hier sind die Ausgaben der Befehle, die Sie gefragt haben:

 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

Nach den in der Antwort unten beschriebenen Änderungen erhalte ich nun:

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.

Ich kann immer noch keinen Verlauf über Sitzungen hinweg speichern. Ich habe folgende Fragen gelesen:

Keiner schien mein Problem anzusprechen, einschließlich der Antwort unten von genau der Person, deren Frage von dem angeblichen Duplikat beantwortet wurde.

Car981
quelle
Siehe auch meine Frage hier und die Fragen, auf die sie verweist. Probieren Sie die darin enthaltenen Vorschläge aus und fragen Sie erneut, ob Sie noch Probleme haben. In der Emantime wird die Abstimmung als Duplikat geschlossen.
Terdon
edit: setze -o | grep Geschichte zeigt die Geschichte auf, echo $ HISTFILE zeigt ~ / .bash_history, echo $ HISTSIZE und $ HISTFILESIZE zeigen beide 500. Aber die Geschichte ist noch nicht über mehrere Sitzungen hinweg beibehalten
Car981
Die $ HISTFILE ist auf ~ / .bash_history gesetzt, aber in ~ befindet sich keine .bash_history-Datei. Wie kann das sein ?
Car981
Bitte bearbeiten Sie Ihre Frage, um neue Informationen hinzuzufügen, anstatt sie zu kommentieren. Fügen Sie die Ausgabe dieser Befehle ein : set -o | grep history, grep -i history ~/.bashrc ~/.bash_profile ~/etc/bash.bashrc ~/etc/profile ~/.profileund ls -la ~/ | grep history.
Terdon
Versuchen Sie, eine bestimmte Verlaufsdatei festzulegen, und fügen Sie diese Zeile zu ~/.bashrc: export HISTFILE="~/history". Macht das einen Unterschied?
Terdon

Antworten:

7

Nun, es sieht so aus, als hätten Sie ~/.bashrcnicht die notwendigen Optionen. Stellen Sie sicher, dass diese Zeilen in Ihrem ~/.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
Terdon
quelle
Es funktioniert immer noch nicht. Unter Bearbeiten finden Sie eine Aktualisierung des neuen Ausgabeergebnisses.
Car981
7

OK, ich habe herausgefunden, was los ist. Ich kann das Fenster nicht schließen, ich muss 'exit' eingeben, damit es ordnungsgemäß geschlossen wird.

Car981
quelle
Sie haben Ihre eigene Frage beantwortet! Das ist großartig, aber Sie sollten es als solches markieren, damit andere wissen, dass Sie keine weiteren Antworten erwarten.
Tiago
Schwer zu sagen, dass dies eine akzeptable Antwort ist - ich habe das gleiche Problem und das manuelle Schließen des Fensters zum Speichern des Verlaufs ist keine gute Idee. Oft schließe ich das Terminalfenster auf andere Weise und möchte es dann nicht verlieren.
Krzysztof Bociurko