Menjawab:
Yang perlu Anda lakukan adalah mengatur HISTSIZE
di profil bash Anda ( ~/.bash_profile
). Anda dapat membiarkannya HISTFILESIZE
tidak disetel . Ini akan mengkonfigurasi baik dalam memori sejarah dan sejarah file berbasis.
# Saves 10 million lines in memory and in the bash history file.
HISTSIZE=10000000
Penjelasan, informasi tambahan.
Masalahnya adalah HISTFILESIZE hanya menetapkan riwayat maksimum yang disimpan ke file ketika Anda memulai sesi. HISTSIZE adalah yang menentukan berapa banyak baris yang disimpan pada akhir sesi. Jika HISTFILESIZE lebih besar dari HISTSIZE Anda, Anda tidak akan pernah melihat lebih dari HISTSIZE Anda karena file ditimpa dengan perintah HISTSIZE ( kecuali jika Anda menetapkan histori untuk ditambahkan, tetapi itu adalah topik terpisah: cari histappend
di shell builtin untuk itu) .
Ini adalah alasan mengapa Anda melihat tidak ada efek Dengan HISTSIZE secara default (mungkin 500) file histori Anda selalu ditimpa oleh perintah $ HISTSIZE terbaru. Apa pun yang lebih tua (yang berpotensi menumbuhkan daftar melewati $ HISTSIZE) dihapuskan.
Untuk sebagian besar kasus, tidak perlu menetapkan HISTFILESIZE secara independen dari HISTSIZE.
HISTSIZE menentukan berapa banyak baris yang akan ditulis ke file histori. Daftar perintah terpotong saat keluar, sebelum menulis ke file histori, menjaga N baris paling baru. Secara default, daftar ini menimpa file histori.
HISTFILESIZE menentukan seberapa besar file histori (sejalan) dapat. File akan terpotong saat startup, menjaga N baris paling baru. Selain itu, file riwayat berpotensi terpotong setiap kali HISTFILESIZE diatur.
Akhirnya, meskipun tampaknya tidak berdokumen, BASH menetapkan HISTFILESIZE berdasarkan HISTSIZE jika HISTSIZE diatur selama startup. Saya sudah mencoba ini di macOS, dan beberapa varietas Ubuntu, dan perilakunya konsisten. Jika Anda mengatur HISTSIZE dalam file peluncuran ( bukan melalui baris perintah dengan cara apa pun), HISTFILESIZE akan ditetapkan agar sesuai. (Coba sendiri: atur HISTSIZE ke nilai arbitarily besar di .bash_profile, keluar dan mulai terminal baru, lalu echo $HISTSIZE $HISTFILESIZE
dan Anda akan menemukan mereka cocok.)
Akibatnya, tidak ada alasan untuk menyentuh HISTFILESIZE kecuali Anda menginginkan nilai yang berbeda, dan kasing yang memiliki nilai yang berbeda jarang terjadi (dan biasanya melibatkan lebih banyak pengaturan penyesuaian riwayat untuk mendapatkan sesuatu yang bermanfaat).