Mac OSX bash kabuk geçmişi uzunluğunu artıramıyor


26

~ / .Bash_profile bir süre önce 500'den fazla satır uzunluğuna sahip olacak şekilde ayarladım, ancak sistem bunu yakalayamıyor gibi görünüyor.

Neden biliyor musun?

> nano -w ~/.bash_profile
export CLICOLOR=1
export LSCOLORS=GxFxCxDxBxegedabagaced
HISTFILESIZE=10000000

> history | wc -l
     500

Yanıtlar:


34

Ayrıca ayarlamanız gerekir HISTSIZE=10000000.

HISTFILESIZEHISTSIZEbellekte saklanacak satır sayısını belirlerken, geçmiş dosyasında saklanacak satır sayısını belirler. Her ikisi de varsayılan olarak500

Yürütme echo $HISTFILESIZE $HISTSIZEEğer sonra tekrar değişiklik yapmak ve daha önce. Önce göreceksin 10000000 500sonra 10000000 10000000sonra.


16

Dosyanızdaki değişkenleri dışa aktarmanız HISTSIZE ve kullanmanız gerekir .HISTFILESIZE~/.bash_profile

Aşağıdaki satırları ekleyin ~/.bash_profile:

# history size
export HISTFILESIZE=1000000
export HISTSIZE=1000000

9

Cevap:

Tek yapmanız gereken HISTSIZEbash profilinizde ( ~/.bash_profile) ayarlanmıştır . HISTFILESIZE Ayarsız bırakabilirsiniz . Bu, hem bellek içi geçmişini hem de dosya tabanlı geçmişi yapılandırır .

# Saves 10 million lines in memory and in the bash history file.
HISTSIZE=10000000

Açıklama, ek bilgi.

Sorun HISTFILESIZE, yalnızca bir oturumu başlattığınızda kaydedilecek maksimum geçmişi ayarlamasıdır. HISTSIZE, bir oturumun sonunda kaç satır kaydedileceğini belirler. HISTFILESIZE sizin HISTSIZE büyükse, dosya HISTSIZE komutları ile üzerine oluyor çünkü sizin HISTSIZE daha asla görmeyeceksin ( sürece eklerine size set tarihini, ama bu ayrı bir konudur: bakmak histappendiçinde komutlar yerleşik kabuk bunun için) .

Hiçbir etki görmemenizin nedeni budur. Varsayılan olarak HISTSIZE (muhtemelen 500) ile geçmiş dosyanız her zaman en son $ HISTSIZE komutları tarafından üzerine yazılır. Daha eski olan her şey (potansiyel olarak listeyi $ HISTSIZE geçecek şekilde büyütebilir) silinir.

Çoğu durumda HISTFILESIZE öğesinin HISTSIZE öğesinden bağımsız olarak ayarlanmasına gerek yoktur.

HISTSIZE, geçmiş dosyasına kaç satır yazılacağını belirler. Komut listesi, en son N satırını koruyarak geçmiş dosyasına yazmadan önce çıkışta kesilir. Varsayılan olarak, bu liste geçmiş dosyasının üzerine yazar.

HISTFILESIZE, geçmiş dosyasının (satırlar halinde) ne kadar büyük olabileceğini belirler. Dosya başlangıçta kesilir ve en son N satırı tutar. Ayrıca, HISTFILESIZE ayarlandığında geçmiş dosyası potansiyel olarak kesilir.

Son olarak, belgelenmemiş gibi görünse de, başlangıç ​​sırasında HISTSIZE ayarlanmışsa BASH, HISTFILESIZE değerini HISTSIZE olarak ayarlar. Ben macOS ve birkaç Ubuntu çeşitleri denedim ve davranış tutarlıdır. HISTSIZE öğesini bir başlatma dosyasında ( herhangi bir şekilde komut satırı üzerinden değil ) ayarlarsanız, HISTFILESIZE eşleşecek şekilde ayarlanır. (Kendiniz deneyin: HISTSIZE değerini .bash_profile içinde geçici olarak büyük bir değere ayarlayın, yeni bir terminalden çıkıp başlayın echo $HISTSIZE $HISTFILESIZEve ardından eşleşen olduğunu göreceksiniz.)

Sonuç olarak, farklı değerler istemediğiniz sürece HISTFILESIZE öğesine dokunmak için bir neden yoktur ve farklı değerlere sahip kullanım durumları nadirdir (ve genellikle yararlı bir şey elde etmek için daha fazla geçmiş özelleştirme ayarı içerir).


Haklısın Zim. Bash kaynak kodu, HISTFILESIZE ayarlanmamışsa HISTFILESIZE değerini HISTSIZE olarak ayarlayacağını gösterir. git.savannah.gnu.org/cgit/bash.git/tree/…
robert
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.