Yanıtlar:
Bunu .bashrc(Linux) veya .bash_profile(MacOS) 'a ekleyin :
export HISTFILESIZE=
export HISTSIZE=
İşte, sınırsız tarih. Şu anda 27000 kayıt var :)
Kimden man bash:
Eğer
HISTFILESIZEayarlanmazsa, hiçbir kesinti yapılır.
Bu .bash_historyasla kısaltılmaz demektir
Aynı HISTSIZEşeyi belgelememiş olmamama rağmen , aynı şey geçerli görünüyor .
Ben deneyeceğim başka bir güzel özellik şudur:
Eğer
HISTTIMEFORMATdeğişken ayarlanır zaman damgaları geçmiş açıklama karakteri ile işaretlenmiştir geçmiş dosyasına yazılır, böylece aşağıdaki gibi, kabuk oturumlar boyunca korunabilir:
export HISTTIMEFORMAT="%F %T "
Bunu zaten denediyseniz bana bildirin.
gdb; eğer bir HISTSIZEdeğişken ayarlarsanız, bunu 0 olarak alır, böylece tarihin büyüklüğünü tamamen devre dışı bırakır.
export, HISTFILESIZEhatlar (değil bayt) sayısında ve geçmiş dosyası değişken ayarladığınızda yuvarlayan tamsayı olur HISTFILESIZE (ve kabuk çıkar). Yani config dosyanızda farklı değerlere sahip iki kere ayarlamayın ...
(cevabımı https://stackoverflow.com/a/19533853/128597 adresinden yeniden göndererek )
Yıllar boyunca birçok büyük, çirkin yinelemelerden ve garip kenar durumlarından sonra, şimdi .bashrc'imin buna yönelik özel bir bölümü var .
Öncelikle, .bashrc'nizin bu bölümünü yorumlamalı veya kaldırmalısınız (Ubuntu için varsayılan). Bunu yapmazsanız, belirli ortamlar (çalışan screenoturumlar gibi ) geçmişinizi kısaltacaktır:
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
# HISTSIZE=1000
# HISTFILESIZE=2000
İkincisi, bunu .bashrc dosyasının altına ekleyin:
# Eternal bash history.
# ---------------------
# Undocumented feature which sets the size to "unlimited".
# https://stackoverflow.com/questions/9457233/unlimited-bash-history
export HISTFILESIZE=
export HISTSIZE=
export HISTTIMEFORMAT="[%F %T] "
# Change the file location because certain bash sessions truncate .bash_history file upon close.
# http://superuser.com/questions/575479/bash-history-truncated-to-500-lines-on-each-login
export HISTFILE=~/.bash_eternal_history
# Force prompt to write history after every command.
# http://superuser.com/questions/20900/bash-history-loss
PROMPT_COMMAND="history -a; $PROMPT_COMMAND"
Not: Her komut çalıştırıldıktan hemen sonra yazılır, bu nedenle bir şifreyi yanlışlıkla yapıştırırsanız, tarihin yazılmasını engellemek için yalnızca% -9'unu öldüremezsiniz, onu manuel olarak kaldırmanız gerekir.
Ayrıca, her bash oturumunun tam geçmiş dosyasını belleğe yükleyeceğini unutmayın; ancak geçmiş dosyanız 10 MB’ye yükselse bile (bu uzun, uzun zaman alacaktır) bash başlangıç saatiniz üzerinde çok fazla bir etki fark etmeyeceksiniz.
HISTFILESIZE, bu nedenle istediğiniz olay dışında böyle bir olayın oluşumunu kaldırmalısınız. Ayrıca kabuk çıkışında da kesilecektir (ancak bu bekleniyor). Ve ihtiyacın olmamalı export.
bash --norcgeçmişi tekrar kısaltacaktır.
export HISTFILE="/home/$USER/hist/`uname -n``tty | tr '/' '-'`"Shell geçmişini oturum başına ayrı tutmak için kullanıyorum (ana bilgisayar adına ve tty adına göre). Tabii önce ~ / hist dizini oluşturmalıyım.
PROMPT_COMMAND="${PROMPT_COMMAND:+${PROMPT_COMMAND} ;}history -a";
Dahil et ~ / .bashrc :
# append a session's history on shell exit
shopt -s histappend
export HISTFILESIZE=
export HISTSIZE=
Bu cevap aşağıdaki kriterleri karşılamaktadır:
ayrı bir ana geçmiş (hiçbir oturum geçmişinizi kesemez)
otomatik tarih yazımı (kısayol tuşları yok)
seyrek yazar (her komuttan sonra eklenmez)
Etkileşimli başlangıçta, $HISTFILESIZEbir sayıya ayarlanmışsa, bash $HISTFILEbu sayıya düşer . Etkileşimli kapanışta, kabuk seçeneği histappendayarlanmışsa, bash $HISTSIZEsatır ekler $HISTFILE, aksi takdirde üzerine yazar $HISTFILE.
Terminal'de bir sekme her yaratıldığında ~/.bash_profileokunur, yani bash sizi okumaya devam etmez ~/.bashrc. Aşağıdaki satırları listenize ekleyin ~/etc/bash_profile:
# if bashrc has content, source it
[[ -s ~/.bashrc ]] && . ~/.bashrc
Ekran kullanıyorsanız, yapılandırma dosyanız ~ / .screenrc'dir. Eğer ekranın geçmişi kaydetmesini istiyorsanız, sadece bash başlangıç dosyalarınızı kaynaklayacak bir giriş kabuğu kullanması (ve geçmişinizi kaydetmesi) yeterlidir.
# use bash, make it a login shell
defshell -bash
Farklı bir konsept (geçerli olmayabilir) ancak shell-sinkunlimited kullanırken geçmişiniz olabilir .