Bagaimana cara bertahan bash history?

9

Saya tidak tahu apakah ini diharapkan, tetapi riwayat saya tidak disimpan di seluruh sesi. Ini untuk mengatakan, jika saya menutup jendela, maka ketika saya membukanya lagi, sejarahnya kosong. Bagaimana saya bisa bertahan di seluruh sesi?

Berikut adalah output dari perintah yang Anda tanyakan:

 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

Setelah pengeditan yang dijelaskan dalam jawaban di bawah, saya sekarang mendapatkan:

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.

Saya masih tidak dapat menyimpan riwayat di seluruh sesi. Saya membaca pertanyaan-pertanyaan berikut:

Sepertinya tidak ada yang mengatasi masalah saya, termasuk jawaban di bawah ini dari orang yang pertanyaannya dijawab dari duplikat yang seharusnya.

Car981
sumber
Lihat juga pertanyaan saya di sini dan pertanyaan yang ditautkannya. Coba saran di dalamnya dan tanyakan lagi apakah Anda masih memiliki masalah. Di masa lalu, pemungutan suara ditutup sebagai duplikat.
terdon
edit: set -o | grep history menunjukkan histori sedang aktif, echo $ HISTFILE menunjukkan ~ / .bash_history, echo $ HISTSIZE dan $ HISTFILESIZE sama-sama menunjukkan 500. Namun sejarah masih belum bertahan di seluruh sesi
Car981
$ HISTFILE diatur ke ~ / .bash_history, tetapi tidak ada file .bash_history di ~. Bagaimana ini bisa terjadi?
Car981
Harap edit pertanyaan Anda untuk menambahkan informasi baru daripada berkomentar. Termasuk output dari perintah ini: set -o | grep history, grep -i history ~/.bashrc ~/.bash_profile ~/etc/bash.bashrc ~/etc/profile ~/.profiledan ls -la ~/ | grep history.
terdon
Coba atur file riwayat tertentu, tambahkan baris ini ke ~/.bashrc: Anda export HISTFILE="~/history". Apakah itu membuat perbedaan?
terdon

Jawaban:

7

Yah, sepertinya Anda ~/.bashrctidak memiliki opsi yang diperlukan. Pastikan baris ini ada di Anda ~/.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
sumber
Itu masih tidak berhasil. Lihat edit untuk pembaruan hasil keluaran baru.
Car981
7

OK saya menemukan apa yang salah. Saya tidak bisa menutup jendela, saya harus mengetik 'keluar' agar bisa menutup dengan anggun.

Car981
sumber
Anda telah menjawab pertanyaan Anda sendiri! Ini bagus, tetapi Anda harus menandainya seperti itu, agar orang lain tahu bahwa Anda tidak mengharapkan jawaban lebih lanjut.
Tiago
Sulit untuk mengatakan ini adalah jawaban yang dapat diterima - Saya punya masalah yang sama dan menutup jendela secara manual untuk menyimpan sejarah bukanlah ide yang baik. Seringkali, saya menutup jendela terminal dengan cara lain dan tidak ingin kehilangan itu.
Krzysztof Bociurko