Bagaimana cara mendapatkan histori perintah yang tak terbatas di bash?

54

Saya menetapkan export HISTSIZE=99999999999999tetapi apakah itu cara terbaik? Saya tidak tahu apakah mungkin terjadi overflow. Saya mencari cara yang teruji dan andal untuk menghapus batasan riwayat perintah.

pengguna55542
sumber
tidak ada mekanisme built-in untuk melakukan itu yang saya tahu.
Saya hanya berkomentar sehingga ketika ini dijawab, saya akan tahu juga !!
2
debian-administration.org/articles/543 mungkin merupakan jawaban yang lebih baik. Setidaknya, ia menangani nilai infinity yang lebih besar daripada solusi pada superuser. :-)
Anda mungkin dapat memotongnya menjadi 9999 dalam praktik (atau bahkan 999; saya menggunakan 1000). Saya tidak pernah menemukan sejarah yang lebih besar dari 1000 berguna. Jika saya ingin memulihkan perintah untuk membuatnya menjadi skrip, saya biasanya melakukannya dengan baik dalam seribu perintah. Kalau tidak, itu bisa pergi dan tidak ada salahnya dilakukan.
Jonathan Leffler
@ JonathanLeffler: Tambang adalah 1.300 baris, dan ini sekecil yang saya bisa. Ctrl-R sangat berguna.
l0b0

Jawaban:

69

itu memang tidak (well) didokumentasikan dan saya kira 99% dari pengguna bash pada rencana ini melakukan set HISTSIZE ke sejumlah besar veeery.

Dalam GNU, bash history ditangani melalui pustaka readline yang perkasa. Perpustakaan memiliki opsi untuk membatasi ukuran histori ("stifle" di jargon readline) atau tidak dan bash cukup mengatur histori readline menjadi stifled / unstifled. Jika Anda melihat misalnya GNU bash versi 4.2, file variable.c, baris 4443, fungsi void sv_histsize (char *) Anda akan menemukan komentar ini (dan seluruh pengekangan / pengekangan dalam fungsi berikut):

/ * Apa yang harus dilakukan setelah variabel HISTSIZE atau HISTFILESIZE berubah.
Jika ada nilai untuk HISTSIZE ini (dan itu numerik), maka hilangkan histori. Kalau tidak, jika tidak ada nilai untuk variabel ini,
batalkan sejarah. Jika nama HISTFILESIZE, dan nilainya
numerik, potong file histori untuk menampung tidak lebih dari banyak
baris. * /

Jadi ini harus dilakukan triknya:

export HISTSIZE=""

Dan juga ini (jika Anda merasa menantang):

export HISTSIZE="GOTCHA"

Semoga ini membantu.


sumber
2
Semoga Tux memberkati Anda :)
meeDamian
17
Saya sarankan: export HISTSIZE = "INFINITE"
AmanicA