husonet | Tarih: 31.12.2014
Çoklu Sessions boyunca Komut Geçmişi tutulması
history komutu komut satırında kullandığınız komutların geçmişini tutuar.
history komutunu kullanarak, kullandığınız komutları yeniden yazmak zorunda kalmadan kullandığınız komutları yeniden çalıştırabilirsiniz. Komut geçmişi 'history' bir ortam değişkeni tarafından belirtilen bir dosyada saklanır.
echo $HISTFILE
/home/peter/.bash_history
Kaydedilecek komutların sayısı aşağıdaki ortam değişkeninin değerine bağlıdır:
echo $HISTSIZE
500
Biz herhangi bir zamanda tek bir kabuk 'shell' oturumunda faaliyet durumunda ömrü basittir. Eğer 2 eşzamanlı oturumunuz varsa, geçmişte aradığınız komutların bulunmadığı sizin için şaşırtıcı olabilir.
Varsayılan davranış komut geçmişi SADECE o oturum için komut çıktıları kaydedilir olmasıdır. Ayrıca, geçmişin mevcut içeriği yeni içerikler ile yazılır.
Önceden bir oturum kullandığınızı varsayarsak, ilk oturuma ait en son komutları olmayacak bir ikinci oturumu açılması durumunda, ilk kabuk oturumu kapatılmadığı için geçmiş dosyasının içeriğinin oturumu erken bitirilir, diğer oturumun kodları üzerine yazılır. Bu durum oldukça kafa karıştırıcı olabilir.
Çözüm basit. Aşağıdaki gibi History davranışını değiştirmek gerekir:
- Geçmiş 'history' doyası üzerine yazması yerine eklenmesinin ayarlanması
shopt -s histappend
- Oturumun sonunda değil, komut'un çalıştırılmasından hemen sonra her komutu kaydedilmesi.
PROMPT_COMMAND='history -a'
~/.bashrc dosyası içine yukarıdaki iki maddeyi ekleyelim.
vim ~/.bashrc
shopt -s histappend
PROMPT_COMMAND='history -a'
Not: PROMPT_COMMAND başlangıç durumuna getirmek için history -a kısmını bağlayabilirsiniz.
PROMPT_COMMAND bir değere sahip olup olmadığını görmek için:
echo $PROMPT_COMMAND
Birleştirme
PROMPT_COMMAND="history -a;$PROMPT_COMMAND"