Tambahkan ini ke .bashrc Anda (Linux) atau .bash_profile (MacOS):
export HISTFILESIZE=
export HISTSIZE=
Ini dia, sejarah tanpa batas. Saat ini saya memiliki 27000 entri :)
Dari man bash :
Jika
HISTFILESIZEtidak disetel, tidak ada pemotongan yang dilakukan.
Artinya .bash_history tidak pernah terpotong
Hal yang sama juga berlaku untuk HISTSIZE , meskipun saya tidak dapat menemukan itu didokumentasikan.
Fitur keren lainnya yang akan saya coba adalah ini:
Jika
HISTTIMEFORMATvariabel disetel, stempel waktu ditulis ke file riwayat, ditandai dengan karakter komentar riwayat, sehingga dapat dipertahankan di seluruh sesi shell, seperti berikut:
export HISTTIMEFORMAT="%F %T "
Beri tahu saya jika Anda sudah mencobanya...
(memposting ulang jawaban saya dari https://stackoverflow.com/a/19533853/128597)
Setelah banyak pengulangan yang besar dan buruk serta kasus tepi yang aneh selama bertahun-tahun, sekarang saya memiliki bagian ringkas dari .bashrc saya yang dikhususkan untuk ini.
Pertama, Anda harus memberi komentar atau menghapus bagian ini dari .bashrc Anda (default untuk Ubuntu). Jika tidak, maka lingkungan tertentu (seperti menjalankan screen sesi) masih akan memotong riwayat Anda:
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
# HISTSIZE=1000
# HISTFILESIZE=2000
Kedua, tambahkan ini ke bagian bawah .bashrc:
Anda# Eternal bash history.
# ---------------------
# Undocumented feature which sets the size to "unlimited".
# https://stackoverflow.com/questions/9457233/unlimited-bash-history
export HISTFILESIZE=
export HISTSIZE=
export HISTTIMEFORMAT="[%F %T] "
# Change the file location because certain bash sessions truncate .bash_history file upon close.
# http://superuser.com/questions/575479/bash-history-truncated-to-500-lines-on-each-login
export HISTFILE=~/.bash_eternal_history
# Force prompt to write history after every command.
# http://superuser.com/questions/20900/bash-history-loss
PROMPT_COMMAND="history -a; $PROMPT_COMMAND"
Catatan:setiap perintah ditulis segera setelah dijalankan, jadi jika Anda tidak sengaja menempelkan kata sandi, Anda tidak bisa hanya "membunuh -9 %%" untuk menghindari penulisan riwayat, Anda harus menghapusnya secara manual.
Perhatikan juga bahwa setiap sesi bash akan memuat file riwayat lengkap di memori, tetapi meskipun file riwayat Anda bertambah hingga 10MB (yang akan memakan waktu lama, lama waktu) Anda tidak akan melihat banyak efek pada waktu startup bash Anda.
Sertakan dalam ~/.bashrc :
# append a session's history on shell exit
shopt -s histappend
export HISTFILESIZE=
export HISTSIZE=
Jawaban ini memenuhi kriteria berikut:
-
riwayat master terpisah (tidak ada sesi yang dapat mengganggu riwayat Anda)
-
penulisan riwayat otomatis (tanpa hotkey)
-
penulisan yang jarang (tidak menambahkan setelah setiap perintah)
latar belakang
Pada startup interaktif, jika $HISTFILESIZE diatur ke angka, bash memotong $HISTFILE ke nomor itu. Pada penutupan interaktif, jika opsi shell histappend diatur, bash menambahkan $HISTSIZE baris ke $HISTFILE , jika tidak akan menimpa $HISTFILE .
kiat untuk OSX (Terminal)
Setiap kali tab dibuat di Terminal, ~/.bash_profile dibaca, yang berarti bash tidak melanjutkan membaca ~/.bashrc Anda . Tambahkan baris berikut ke ~/etc/bash_profile Anda :
# if bashrc has content, source it
[[ -s ~/.bashrc ]] && . ~/.bashrc
tips untuk layar
Jika Anda menggunakan screen, file konfigurasi Anda adalah ~/.screenrc. Jika Anda ingin layar merekam riwayat, Anda hanya perlu menyetelnya untuk menggunakan shell login yang akan menjadi sumber file startup bash Anda (dan merekam riwayat Anda).
# use bash, make it a login shell
defshell -bash