Yanıtlar:
HISTSIZE
bash oturumunuz devam ederken geçmiş listesinde bellekte depolanan satır veya komut sayısıdır.
HISTFILESIZE
(a) bir oturumun başlangıç zamanında geçmiş dosyasında izin verilen satırların veya komutların sayısıdır ve (b) gelecekteki oturumlarda kullanılmak üzere bash oturumunuzun sonunda geçmiş dosyasında depolanır.
file
: Diskte - ve list
: bellekte arasındaki farklara dikkat edin .
Yukarıdaki tüm bilgiler + bazı örnekler:
Örnek 1 :
HISTFILESIZE=10
veHISTSIZE=10
histappend
Etkinleştirilmediğini varsayarsak , 41 ile 50 arasındaki komutlar artık başlangıcında tuttuğu 10 komutu ve yeni yazılan 10 komutu içeren HISTFILE klasörünüze kaydedilir.Örnek 2 :
HISTFILESIZE=10
veHISTSIZE=5
histappend
Etkinleştirilmediğini varsayarsak , 46 ile 50 arasındaki komutlar artık başlangıcında tuttuğu 10 komutu ve yeni yazılan 5 komutu içeren HISTFILE klasörünüze kaydedilir.Örnek 3 :
HISTFILESIZE=5
veHISTSIZE=10
histappend
Etkinleştirildiği varsayılırsa , 41 ile 50 arasındaki komutlar artık başlangıcında tuttuğu 5 komutu ve yeni yazılan 10 komutu içeren HISTFILE klasörünüze kaydedilir.Alınan bilgiler elixir_sinari :
Komutları yazarken geçmiş "dosya" güncellenmez. Komutlar bir "listede" ayrı olarak saklanır (geçmiş komutuyla erişilir). Saklanan bu komutların sayısı HISTSIZE değeri ile kontrol edilir. Kabuk (etkileşimli) çıktığında, son "HISTSIZE" satırı bu "listeden" $ HISTFILE dosyasına kopyalanır / eklenir. HISTFILESIZE ayarlanırsa, bu işlemden sonra $ HISTFILE dosyasında yalnızca $ HISTFILESIZE satırının (en son) bulunması sağlanır. Ve kabuk başladığında, "list" $ HISTFILE değerinden maksimum $ HISTSIZE komutuna kadar başlatılır.
Ve man bash
sayfadan:
HISTSIZE değişkeninin değeri, bir geçmiş listesine kaydedilecek komut sayısı olarak kullanılır. Son HISTSIZE komutlarının metni (varsayılan 500) kaydedilir. (...)
Başlangıçta geçmiş, HISTFILE değişkeni (varsayılan ~ / .bash_history) tarafından adlandırılan dosyadan başlatılır. HISTFILE değeri olarak adlandırılan dosya, gerekirse HISTFILESIZE değeri tarafından belirtilen satır sayısından fazlasını içermeyecek şekilde kesilir. (...) Etkileşimli bir kabuk çıktığında, son $ HISTSIZE satırı geçmiş listesinden $ HISTFILE klasörüne kopyalanır. Histappend kabuk seçeneği etkinse (aşağıdaki SHELL BUILTIN COMMANDS altındaki shopt açıklamasına bakın), satırlar geçmiş dosyasına eklenir, aksi takdirde geçmiş dosyasının üzerine yazılır. HISTFILE ayarlanmamışsa veya geçmiş dosyası yazılamazsa, geçmiş kaydedilmez. (...) Geçmiş kaydedildikten sonra, geçmiş dosyası HISTFILESIZE satırından fazlasını içermeyecek şekilde kesilir. HISTFILESIZE ayarlanmamışsa,
Arturomp'un söylediklerinin üzerine inşa etmek ve bunu biraz daha netleştirmek için.
2000 yıllık bir geçmişe sahip olduğunuzu varsayarsak ..
~$ history
1 sdf
2 fghdfgjf
3 fghfghdf
.. ..
2027 78
2028 57
2029 yu45u
İle gösterdiklerinizi kısabilirsiniz HISTSIZE
~$ HISTSIZE=5
~$ history
2026 546
2027 78
2028 56
2029 yu45u
2030 HISTSIZE=5
Şimdi, kaç komut yazdığınız önemli değil, yalnızca son 5 kaydedilecektir.
~$ 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
Sadece son 5 komut kaydedildiği için ilk komutumuzun ("ABC") tarihte olmadığını açıkça görebiliyoruz.
Şimdi, toplam geçmiş bir dosyada ( .bash_history
) saklanır ve bu dosyanın ne kadar süre alacağını değiştirebilirsiniz HISTFILESIZE
. Örneğin a ile 2033
HISTFILESIZE
, benim durumumda bu olurdu:
~$ history
1 fghfghdf
2 gegege
3 gege
.. ..
2028 HISTSIZE=5
2029 GGH
2030 GSDHFG
2031 JFDR
2032 ABSDDS
2033 AHFGHFD
HISTSIZE=-1
ve HISTFILESIZE=-1
.
bash
Man sayfası diyor: Non-numeric values and numeric values less than zero inhibit truncation
ama sonra bunun doğru olup olmadığını kontrol etme cesaretim yoktu çünkü tarihimi kaybetmek istemiyorum :-)
HISTSIZE='INFINITY'
ve olarak değiştirdim HISTFILESIZE='ANDBEYOND'
. Sayısal olmadıkları için her şeyi kaydederler. Bahşiş için teşekkürler!