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
HISTFILESIZE
ayarlanmazsa, hiçbir kesinti yapılır.
Bu .bash_history
asla 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
HISTTIMEFORMAT
değ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 HISTSIZE
değişken ayarlarsanız, bunu 0 olarak alır, böylece tarihin büyüklüğünü tamamen devre dışı bırakır.
export
, HISTFILESIZE
hatlar (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 screen
oturumlar 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 --norc
geç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, $HISTFILESIZE
bir sayıya ayarlanmışsa, bash $HISTFILE
bu sayıya düşer . Etkileşimli kapanışta, kabuk seçeneği histappend
ayarlanmışsa, bash $HISTSIZE
satır ekler $HISTFILE
, aksi takdirde üzerine yazar $HISTFILE
.
Terminal'de bir sekme her yaratıldığında ~/.bash_profile
okunur, 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 .