Geçmiş boyutunu kontrol eden iki değişken vardır:
HISTFILESIZE Geçmiş dosyasında bulunan maksimum satır sayısı. Bu değişkene bir değer atandığında, gerekirse en eski girişleri kaldırarak bu sayıdan daha fazla satır içermeyecek şekilde geçmiş dosyası kesilir. Geçmiş dosyası, bir kabuk çıktığında yazıldıktan sonra da bu boyuta kısaltılır. Değer 0 ise, geçmiş dosyası sıfır boyutuna kesilir. Sayısal olmayan değerler ve sıfırdan küçük sayısal değerler kesmeyi engeller. Kabuk, başlangıç dosyalarını okuduktan sonra varsayılan değeri HISTSIZE değerine ayarlar.
ve
HISTSIZE Komut geçmişinde hatırlanması gereken komut sayısı (aşağıdaki TARİH'e bakın). Değer 0 ise, komutlar geçmiş listesine kaydedilmez. Sıfırdan küçük sayısal değerler her komutun geçmiş listesine kaydedilmesine neden olur (sınır yoktur). Kabuk, başlangıç dosyalarını okuduktan sonra varsayılan değeri 500 olarak ayarlar.
Bu iki değişken, geçmişinizin davranışını kontrol etmenizi sağlar. Temel olarak, HISTSIZE
geçerli oturumunuz sırasında kaydedilen komut HISTFILESIZE
sayısı ve oturumlar arasında hatırlanacak komut sayısıdır. Yani mesela:
$ echo $HISTSIZE
10
$ echo $HISTFILESIZE
5
$ history | wc
10 29 173
Yukarıdaki örnekte, HISTSIZE
10 olarak ayarlandığından history
, 10 komutun bir listesini döndürür. Ancak, oturumu kapatıp yeniden oturum açarsanız, history
5 HISTFILESIZE
olarak ayarlandığından yalnızca 5 komut döndürür . Bunun nedeni, oturumunuzdan çıktıktan sonra HISTFILESIZE
geçmişinizin satırlarının geçmiş dosyanıza kaydedilmesidir ( ~/.bash_history
varsayılan olarak HISTFILE
). Başka bir deyişle, komutlar , bu noktaya HISTFILE
ulaşana kadar eklenir, eklenen $HISTFILESIZE
her satır, dosyanın ilk komutunun kaldırılacağı anlamına gelir.
Bu değişkenlerin değerlerini ~/.profile
(veya ~/.bash_profile
bu dosya varsa) içinde ayarlayabilirsiniz . Bunları ~/.bashrc
ilk önce ayarlamayın, çünkü orada hiçbir iş ayarlanmamıştır ve ikincisi, girişte diğer sorunlara yol açabilecek giriş dışı kabuklara karşı farklı davranışlara sahip olmanıza neden olacaktır .
Geçmişinizin davranışına ince ayar yapmanıza izin veren diğer faydalı değişkenler şunlardır:
HISTIGNORE
: Bu, nadiren ilgilenilen bazı ortak komutları görmezden gelmenizi sağlar. Örneğin, şunları ayarlayabilirsiniz:
export HISTIGNORE="pwd:df:du"
Bu herhangi bir komut ile başlayan neden olur pwd
, df
ya da du
göz ardı edilecek ve geçmişine kaydedilmediğini.
HISTCONTROL
: Bu, tarihin nasıl çalışacağını seçmenizi sağlar. Şahsen, HISTCONTROL=ignoredups
yinelenen komutları yalnızca bir kez kaydetmesine neden olana ayarladım . Diğer seçenekler, ignorespace
boşlukla başlayan erasedups
ve geçerli satırla eşleşen tüm önceki satırların bu satır kaydedilmeden geçmiş listesinden kaldırılmasına neden olan komutları yok saymaktır . ignoreboth
ignorespace ve ignoredups için kısayol.
HISTTIMEFORMAT
: Bu, geçmiş dosyasının saat biçimini ayarlamanızı sağlar. Ayrıntılar için Pandya'nın cevabına bakın veya okuyun man bash
.
Daha fazla ince ayar için şunlara sahipsiniz:
histappend
Bash seçeneği. Bu, shopt -s histappend
o komutu çalıştırarak veya cihazınıza ekleyerek ayarlanabilir ~/.bashrc
. Bu seçenek belirlenirse
geçmiş listesi, kabuk çıkarken dosyanın üzerine yazmak yerine HISTFILE değişkeninin değeri ile adlandırılan dosyaya eklenir.
Bu, farklı oturumların geçmişlerini birleştirmenize izin verdiği için çok kullanışlıdır (örneğin farklı terminaller düşünün).
history
Komut iki yararlı seçenekleri vardır:
Örneğin, bu iki komutu, PROMPT_COMMAND
(kabuğunuz her istemi gösterdiğinde yürütülür, böylece yeni bir kabuk başlattığınızda ve içinde çalıştırdığınız her komuttan sonra yürütülür) öğesine ekleyebilirsiniz :
export PROMPT_COMMAND='history -a;history -r;'
Birlikte, açtığınız herhangi bir yeni terminalin diğer kabuk oturumlarının geçmişini hemen içe aktarmasını sağlarlar. Sonuç, tüm terminaller / kabuk oturumlarında ortak bir geçmiştir.