Bazı nedenlerden dolayı, sistemimi yeniden başlattıktan sonra BASH geçmişimi saklayamıyorum. İşte benim ilgili bölümler ~/.bashrc
:
shopt -s histappend
PROMPT_COMMAND='history -a; updateWindowTitle'
export HISTCONTROL=ignoredups
export HISTSIZE=9999
export HISTFILESIZE=999999
export HISTFILE="$HOME/.bash_history"
Bunların hepsinin gerekli seçenekler olduğunu söyleyebildiğim kadarıyla ( geçmişte bunların hepsi olmadan tarihi birden çok yeniden başlatma arasında tutabildiğimi biliyorum ). Ancak, bu seçenekleri birkaç yeniden başlatmadan önce eklemiş olmama rağmen, bir yeniden başlatmadan sonra tarihimin çoğunu hala kaybediyorum. Boş değil, ancak yeniden başlatmadan önce sahip olduğum 9999 satırı yok.
Herkes şikayet etmeden önce, evet bu soruları okudum. Yukarıda listelenen önerilerinin bir kısmını uyguladım, geri kalanı yararsızdı veya ilgisizdi:
- Histappend kullanırken geçmişte kayıp
- Bash'in tarih değiştirmesini nasıl önleyebilirim?
- Bash geçmişi komutunda neyin görüneceğini ne belirler?
- Bash geçmişimi oturumlar boyunca nasıl saklayabilirim?
- bash geçmişini düzenli olarak kaydet
İçinde başka ilgili komutlar olması ihtimaline karşı, tümümüzü ~/.bashrc
burada görebilirsiniz .
O zaman neyi özlüyorum? Geçmişim neden kaydedilmedi? Herkes başka bir dosyanın ilgili olabileceğini düşünürse bana bildirin, ben de gönderirim. Dize içeren tek ilgili dosya olduğunu gösterdi grep -i hist \.*
benim çalışarak kontrol veya oldu .$HOME
.
hist
HIST
.bashrc
Linux Mint Debian Edition, GNU bash, sürüm 4.2.36 (1) -release (x86_64-pc-linux-gnu) ve en sevdiğim terminal öykünücüsünü (ilgili olması durumunda) çalıştırıyorum terminator
.
GÜNCELLEME:
@ Mpy'nin yorumlardaki önerisini takiben , varsayılanın aksine olarak ~/.bashrc
ayarlamamı değiştirdim ve bu etkileşimli kabuklar için sorunu çözüyor gibi görünüyor . Giriş kabukları hala aynı davranışı gösterir ve geçmiş satırlarda kesilir . Ancak, ilgili dosyalarda ayarlanmış ilişkili değişken yoktur :HISTFILE=~/bash_history
~/.bash_history
500
HIST
$ for f in /etc/profile ~/.profile ~/.bash_profile ~/.bash_login; do \
echo -ne "$f :"; echo `grep HIST $f`; \
done
/etc/profile :
/home/terdon/.profile :grep: /home/terdon/.profile: No such file or directory
/home/terdon/.bash_profile :grep: /home/terdon/.bash_profile: No such file or directory
/home/terdon/.bash_login :grep: /home/terdon/.bash_login: No such file or directory
$ grep -r HIST /etc/profile.d/ <-- returns nothing
Öyleyse, neden kuruyor HISTSIZE
ve HISTFILESIZE
içinde ~/.bashrc
açıkça ayarlanmış sürece yeterli değil $HISTFILE
varsayılan dışında bir şeye ~/.bash_history
?
history
komutu yürüttüğünüzde , gördüğünüz çıktı cat .bash_history
satır numaraları dışında gördükleriniz ile aynı mı? Yani history
komut listesi zaman damgaları veya diğer bilgiler mi? Sormamın nedeni, bu ezoterik şeyleri görürseniz, kabuk geçmişiyle uğraşan başka bir modül / fonksiyon / program olması ve ne olursa olsun yanlış veya buggy bir versiyonunun, kedere neden olabileceği anlamına geliyor. .
;)
: Başka bir dosyayı varsayılan olarak değil HISTFILE olarak deneyin ~/.bash_history
. Çok yapılandırılmış bir açıklama: Ben bash varsayılan kabuk olduğunu varsayalım, bu yüzden sistem başlatıldığında etkileşimli olmayan bir kabuk X oturumunuzun üst öğesi (ayrıca X kullandığınızı da varsayıyorum), histappend seçeneği hakkında hiçbir şey bilmeyecektir (.bashrc sadece Bu ana kabuk çalıştığı sürece her şey yolundadır, ancak sonlandırıldığında (yani sistem durduğunda) geçersiz kılar ~/.bash_history
(varsayılan olarak) ve geçmişinizi