Apa perbedaan HISTSIZE
vs HISTFILESIZE
?
Mereka digunakan untuk memperpanjang sejarah bash di luar 500 baris default.
Tampaknya tidak ada kejelasan di sini dan di forum lain tentang mengapa keduanya dibutuhkan. ( Contoh 1 , Contoh 2 , Contoh 3 ).
HISTSIZE
adalah jumlah baris atau perintah yang disimpan dalam memori dalam daftar riwayat saat sesi bash Anda sedang berlangsung.
HISTFILESIZE
adalah jumlah baris atau perintah yang (a) diizinkan dalam file histori pada saat permulaan sesi, dan (b) disimpan dalam file histori pada akhir sesi bash Anda untuk digunakan pada sesi berikutnya.
Perhatikan perbedaan antara file
: pada disk - dan list
: dalam memori.
Semua info di atas + beberapa contoh:
Contoh 1 :
HISTFILESIZE=10
danHISTSIZE=10
histappend
tidak diaktifkan, perintah 41 hingga 50 disimpan ke HISTFILE Anda yang sekarang memiliki 10 perintah yang dipegang di awal ditambah 10 perintah yang baru ditulis.Contoh 2 :
HISTFILESIZE=10
danHISTSIZE=5
histappend
tidak diaktifkan, perintah 46 hingga 50 disimpan ke HISTFILE Anda yang sekarang memiliki 10 perintah yang dipegang di awal ditambah 5 perintah yang baru ditulis.Contoh 3 :
HISTFILESIZE=5
danHISTSIZE=10
histappend
tidak diaktifkan, perintah 41 hingga 50 disimpan ke HISTFILE Anda yang sekarang memiliki 5 perintah yang dipegang di awal ditambah 10 perintah yang baru ditulis.Info dari elixir_sinari :
"File" riwayat tidak diperbarui saat Anda mengetik perintah. Perintah-perintah disimpan dalam "daftar" secara terpisah (diakses oleh perintah sejarah). Jumlah perintah yang disimpan ini dikendalikan oleh nilai HISTSIZE. Ketika shell (interaktif) keluar, baris $ HISTSIZE terakhir disalin / ditambahkan ke $ HISTFILE dari "daftar" itu. Jika HISTFILESIZE diset, maka setelah operasi ini, dipastikan hanya $ HISTFILESIZE baris (terbaru) yang ada di $ HISTFILE. Dan ketika shell dimulai, "daftar" diinisialisasi dari $ HISTFILE hingga maksimum $ HISTSIZE perintah.
Dan dari man bash
halaman:
Nilai variabel HISTSIZE digunakan sebagai jumlah perintah untuk disimpan dalam daftar riwayat. Teks dari perintah HISTSIZE terakhir (default 500) disimpan. (...)
Pada startup, histori diinisialisasi dari file yang dinamai oleh variabel HISTFILE (default ~ / .bash_history). File yang dinamai dengan nilai HISTFILE dipotong, jika perlu, mengandung tidak lebih dari jumlah baris yang ditentukan oleh nilai HISTFILESIZE. (...) Ketika shell interaktif keluar, $ HISTSIZE baris terakhir disalin dari daftar riwayat ke $ HISTFILE. Jika opsi histappend shell diaktifkan (lihat deskripsi shopt di bawah SHELL BUILTIN COMMANDS di bawah), baris ditambahkan ke file histori, jika tidak file histori akan ditimpa. Jika HISTFILE tidak disetel, atau jika file histori tidak dapat ditulis, histori tidak disimpan. (...) Setelah menyimpan histori, file histori dipotong agar tidak lebih dari baris HISTFILESIZE. Jika HISTFILESIZE tidak disetel,
Membangun di atas apa yang dikatakan arturomp dan dalam upaya membuatnya sedikit lebih jelas.
Dengan asumsi Anda memiliki sejarah panjang 2000-an ..
Anda dapat mengurangi dengan apa Anda ditampilkan
HISTSIZE
Sekarang, tidak peduli berapa banyak perintah yang Anda ketikkan, hanya 5 perintah terakhir yang akan dicatat.
Kita dapat dengan jelas melihat bahwa perintah pertama kita ("ABC") tidak ada dalam sejarah karena hanya 5 perintah terakhir yang dicatat.
Sekarang, total history disimpan dalam file (
.bash_history
) dan Anda dapat mengubah berapa lama file ini didapat denganHISTFILESIZE
. Misalnya dengan2033
HISTFILESIZE
, dalam kasus saya, saya akan memiliki ini:sumber
HISTSIZE=-1
danHISTFILESIZE=-1
.bash
Halaman manual mengatakan:Non-numeric values and numeric values less than zero inhibit truncation
tapi kemudian saya tidak punya keberanian untuk memeriksa apakah ini benar karena saya tidak ingin kehilangan sejarah saya :-)HISTSIZE='INFINITY'
danHISTFILESIZE='ANDBEYOND'
. Karena mereka bukan angka, mereka menyimpan semuanya. Terima kasih atas tipnya!