Jawaban:
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=10danHISTSIZE=10
histappendtidak 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=10danHISTSIZE=5
histappendtidak 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=5danHISTSIZE=10
histappendtidak 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 bashhalaman:
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 ..
~$ history
1 sdf
2 fghdfgjf
3 fghfghdf
.. ..
2027 78
2028 57
2029 yu45u
Anda dapat mengurangi dengan apa Anda ditampilkan HISTSIZE
~$ HISTSIZE=5
~$ history
2026 546
2027 78
2028 56
2029 yu45u
2030 HISTSIZE=5
Sekarang, tidak peduli berapa banyak perintah yang Anda ketikkan, hanya 5 perintah terakhir yang akan dicatat.
~$ ABC
~$ GGH
~$ GSDHFG
~$ JFDR
~$ ABSDDS
~$ AHFGHFD
<close terminal>
<open new terminal>
~$ history
1 sdf
2 fghdfgjf
3 fghfghdf
.. ..
2028 56
2029 yu45u
2030 HISTSIZE=5
2031 GGH
2032 GSDHFG
2033 JFDR
2034 ABSDDS
2035 AHFGHFD
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 dengan HISTFILESIZE. Misalnya dengan 2033 HISTFILESIZE, dalam kasus saya, saya akan memiliki ini:
~$ history
1 fghfghdf
2 gegege
3 gege
.. ..
2028 HISTSIZE=5
2029 GGH
2030 GSDHFG
2031 JFDR
2032 ABSDDS
2033 AHFGHFD
HISTSIZE=-1dan HISTFILESIZE=-1.
bashHalaman manual mengatakan: Non-numeric values and numeric values less than zero inhibit truncationtapi kemudian saya tidak punya keberanian untuk memeriksa apakah ini benar karena saya tidak ingin kehilangan sejarah saya :-)
HISTSIZE='INFINITY'dan HISTFILESIZE='ANDBEYOND'. Karena mereka bukan angka, mereka menyimpan semuanya. Terima kasih atas tipnya!