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
HISTFILESIZE
tidak 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
HISTTIMEFORMAT
variabel 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