Ada dua variabel yang mengontrol ukuran histori:
HISTFILESIZE Jumlah maksimum baris yang terkandung dalam file histori. Ketika variabel ini diberi nilai, file histori dipotong, jika perlu, mengandung tidak lebih dari jumlah baris dengan menghapus entri tertua. File histori juga dipotong ke ukuran ini setelah menulisnya ketika sebuah shell keluar. Jika nilainya 0, file riwayat dipotong ke ukuran nol. Nilai non-numerik dan nilai numerik kurang dari nol menghambat pemotongan. Shell menetapkan nilai default ke nilai HISTSIZE setelah membaca file startup apa pun.
dan
HISTSIZE Jumlah perintah yang perlu diingat dalam sejarah perintah (lihat SEJARAH di bawah). Jika nilainya 0, perintah tidak disimpan dalam daftar riwayat. Nilai numerik yang kurang dari nol menghasilkan setiap perintah yang disimpan dalam daftar riwayat (tidak ada batasan). Shell menetapkan nilai default ke 500 setelah membaca semua file startup.
Dua variabel ini memungkinkan Anda untuk mengontrol perilaku riwayat Anda. Pada dasarnya, HISTSIZEadalah jumlah perintah yang disimpan selama sesi Anda saat ini dan HISTFILESIZEjumlah perintah yang akan diingat di seluruh sesi. Jadi, misalnya:
$ echo $HISTSIZE
10
$ echo $HISTFILESIZE
5
$ history | wc
10 29 173
Dalam contoh di atas, karena HISTSIZEdiatur ke 10, historymengembalikan daftar 10 perintah. Namun, jika Anda keluar lalu masuk kembali, historyhanya akan mengembalikan 5 perintah karena HISTFILESIZEdiatur ke 5. Ini karena, setelah Anda keluar dari sesi Anda, HISTFILESIZEbaris riwayat Anda disimpan ke file riwayat Anda ( ~/.bash_historysecara default tetapi dikontrol oleh HISTFILE). Dengan kata lain, perintah ditambahkan HISTFILEhingga mencapai $HISTFILESIZEgaris di titik mana, setiap baris berikutnya yang ditambahkan berarti perintah pertama file akan dihapus.
Anda dapat mengatur nilai-nilai variabel ini di ~/.profile(atau ~/.bash_profilejika file itu ada). Jangan atur mereka di ~/.bashrcpertama Anda karena mereka tidak memiliki bisnis yang ditetapkan di sana dan kedua karena itu akan menyebabkan Anda memiliki perilaku yang berbeda dalam shell login vs non-login yang dapat menyebabkan masalah lain .
Variabel berguna lainnya yang memungkinkan Anda menyesuaikan perilaku riwayat Anda adalah:
HISTIGNORE: Ini memungkinkan Anda untuk mengabaikan perintah umum tertentu yang jarang menarik. Misalnya, Anda dapat mengatur:
export HISTIGNORE="pwd:df:du"
Itu akan menyebabkan perintah apapun yang dimulai dengan pwd, dfatau duuntuk diabaikan dan tidak disimpan dalam sejarah Anda.
HISTCONTROL: Yang ini memungkinkan Anda memilih cara kerja histori. Secara pribadi, saya mengaturnya HISTCONTROL=ignoredupsyang menyebabkannya menyimpan perintah yang digandakan hanya sekali. Opsi lainnya adalah ignorespacemengabaikan perintah yang dimulai dengan spasi, dan erasedupsyang menyebabkan semua baris sebelumnya yang cocok dengan baris saat ini dihapus dari daftar riwayat sebelum baris itu disimpan. ignorebothadalah singkatan untuk ignorespace dan ignoredups.
HISTTIMEFORMAT: Ini memungkinkan Anda untuk mengatur format waktu dari file histori. Lihat jawaban Pandya atau baca man bashuntuk detailnya.
Untuk penyempurnaan lebih lanjut, Anda harus:
The histappendpesta pilihan. Ini dapat diatur dengan menjalankan shopt -s histappendatau menambahkan perintah itu ke ~/.bashrc. Jika opsi ini disetel
daftar riwayat ditambahkan ke file yang dinamai dengan nilai variabel HISTFILE saat shell keluar, alih-alih menimpa file.
Ini sangat berguna karena memungkinkan Anda untuk menggabungkan sejarah sesi yang berbeda (pikirkan terminal yang berbeda misalnya).
The historyperintah memiliki dua pilihan yang berguna:
Anda bisa, misalnya, menambahkan dua perintah ini ke Anda PROMPT_COMMAND(yang dieksekusi setiap kali shell Anda menampilkan prompt, jadi setiap kali Anda memulai shell baru dan setelah setiap perintah Anda jalankan di dalamnya):
export PROMPT_COMMAND='history -a;history -r;'
Digabungkan, mereka memastikan bahwa setiap terminal baru yang Anda buka akan segera mengimpor sejarah dari setiap sesi shell lainnya. Hasilnya adalah sejarah umum di semua terminal / sesi shell.