Jak zachować historię bash?

9

Nie wiem, czy się tego spodziewam, ale moja historia nie jest zapisywana między sesjami. To znaczy, jeśli zamknę okno, to kiedy je otworzę ponownie, historia jest pusta. Jak mogę zachować to podczas sesji?

Oto wyniki zadanych poleceń:

 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

Po zmianach opisanych w odpowiedzi poniżej otrzymuję:

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.

Nadal nie mogę zapisać historii między sesjami. Czytam następujące pytania:

Wydawało się, że nikt nie odnosi się do mojego problemu, w tym odpowiedź poniżej osoby, na którą pytanie padło z rzekomego duplikatu.

Car981
źródło
Zobacz także moje pytanie tutaj i pytania, do których prowadzi link. Wypróbuj zawarte w nich sugestie i zapytaj ponownie, czy nadal masz problemy. W międzyczasie głosowanie na zamknięcie jako duplikat.
terdon
edycja: set -o | grep history pokazuje, że historia jest włączona, echo $ HISTFILE pokazuje ~ / .bash_history, echo $ HISTSIZE i $ HISTFILESIZE pokazują 500. Ale historia nadal nie jest utrwalana między sesjami
Car981 18.04.1313
$ HISTFILE jest ustawiony na ~ / .bash_history, ale nie ma pliku .bash_history w ~. Jak to może być ?
Car981 18.04.13
Proszę edytować swoje pytanie do dodawania nowych informacji, a nie komentowanie. Obejmują wyjście z tych poleceń: set -o | grep history, grep -i history ~/.bashrc ~/.bash_profile ~/etc/bash.bashrc ~/etc/profile ~/.profilei ls -la ~/ | grep history.
terdon
Spróbuj ustawić konkretnego pliku historii, dodać tę linię do ~/.bashrc: export HISTFILE="~/history". Czy to robi różnicę?
terdon

Odpowiedzi:

7

Wygląda na to, że twój ~/.bashrcnie ma niezbędnych opcji. Upewnij się, że te wiersze znajdują się w ~/.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
źródło
To wciąż nie działa. Zobacz edycję, aby uzyskać aktualizację nowego wyniku.
Car981 18.04.13
7

OK, dowiedziałem się, co jest nie tak. Nie mogę zamknąć okna, muszę wpisać „exit”, aby zamknęło się z gracją.

Car981
źródło
Odpowiedziałeś na swoje pytanie! To świetnie, ale powinieneś to zaznaczyć, aby inni wiedzieli, że nie oczekujesz dalszych odpowiedzi.
Tiago,
Trudno powiedzieć, że jest to akceptowalna odpowiedź - mam ten sam problem i ręczne zamknięcie okna w celu zapisania historii nie jest dobrym pomysłem. Często zamykam okno terminala na inne sposoby i wtedy nie chciałbym go zgubić.
Krzysztof Bociurko,