GNU/Linux >> Belajar Linux >  >> Linux

Apakah ada cara untuk mengatur ukuran daftar riwayat di bash menjadi lebih dari 5000 baris?

Ini adalah kode aktual yang memuat riwayat (dari bashhist.c sekitar baris 260):

/* Load the history list from the history file. */
void

load_history ()
{
  char *hf;

  /* Truncate history file for interactive shells which desire it.
     Note that the history file is automatically truncated to the
     size of HISTSIZE if the user does not explicitly set the size
     differently. */
  set_if_not ("HISTSIZE", "500");
  sv_histsize ("HISTSIZE");

  set_if_not ("HISTFILESIZE", get_string_value ("HISTSIZE"));
  sv_histsize ("HISTFILESIZE");

  /* Read the history in HISTFILE into the history list. */
  hf = get_string_value ("HISTFILE");

  if (hf && *hf && file_exists (hf))
    {
      read_history (hf);
      using_history ();
      history_lines_in_file = where_history ();
    }
}

Jika nilai HISTSIZE dan HISTFILESIZE ditetapkan, mereka akan digunakan.

Readline, pustaka yang benar-benar menangani pengeditan masukan/baris dan riwayat melakukannya menawarkan fasilitas untuk membatasi seberapa besar buffer sejarah dapat tumbuh. Namun, Bash tidak menempatkan batas yang keras pada hal ini di mana nilai yang lebih besar akan diabaikan, setidaknya yang dapat saya temukan.

Edit

Dari komentar, readline memang pelakunya. Saya sedang melihat (agak bodoh) pada parameter fungsional:

ada variabel yang disebut history-size yang dapat dibaca dari file inputrc. variabel itu menetapkan jumlah maksimum entri riwayat yang disimpan dalam daftar riwayat. Saya memeriksa nilainya di file inputrc lokal saya untuk menemukannya sama dengan 5000. Menyetelnya ke nilai yang lebih besar memecahkan masalah.


Riwayat Anda terpotong saat pertama kali HISTSIZE disetel, jadi jika disetel ke 5000 lebih awal di ~/.bashrc Anda, atau di bashrc seluruh sistem di /etc , Anda perlu mengomentarinya.


Coba keduanya HISTFILESIZE dan HISTSIZE .


Linux
  1. Kiat bash untuk sehari-hari di baris perintah

  2. Bagaimana Cara Mengakses History On The Fly Di Unix?

  3. Basa'?

  1. Memahami Tanda Seru (!) Di Bash?

  2. UTF-8 sepenuhnya

  3. Cetak file, lewati baris X pertama, di Bash

  1. Jadikan riwayat Bash lebih bermanfaat dengan kiat-kiat ini

  2. Ny Cara Mengetahui Ukuran Cache L1, L2, L3 Dan Ram Di Linux?

  3. Jalankan perintah di bash tanpa menyimpan di riwayat