Terminal oturum komut geçmişini bash'da nasıl eşitlerim?


13

~/.bash_historyBir terminal oturumu sırasında son komutlarımı aramaya çalıştım ama onlar orada değildi. Sanırım bunun nedeni birden fazla terminal oturumumun açık olması.

Geçerli terminal oturumunun komut geçmişini bash_history dosyasına (oturumu kapatmadan ve o ortamı kaybetmeden) senkronize edebilmemin (yani sync-push veya sync-write-out) bir yolu var mı?

( syncKomutun dosya sistemi değişikliklerini bazı sistemlerde nasıl sakladığı fikri uzaktan benzer olacaktır .)

Birden fazla oturum geçmişini korumak için bash ayarlayabileceğimi hayal ediyorum, ancak yeni bir makinede çalışırken senaryolarda geçerli geçmiş arabelleğini itme yeteneği yine de yararlı olabilir ve yanlışlıkla bash'ı istediğiniz şekilde ayarlamayı unutursunuz .


history -a Kabuk yerleşik komutunu denedim ama bir şekilde şimdi .bash_historydosyada 'izin reddedildi' , bundan sonra.
n611x007

Yanıtlar:


19

Bu satırı şuraya ekle .bashrc:

export PROMPT_COMMAND="history -a; history -n"

Yeni terminal açın ve kontrol edin.

açıklama

  • history -a geçmiş dosyasına yeni geçmiş satırları ekler.
  • history -nbashgeçmiş dosyasından geçerli geçmiş oturum listesine okunmayan satırları okumayı söyler .
  • PROMPT_COMMAND: bu değişkenin içeriği bashshow komut isteminden önce normal komut olarak çalıştırılır . Bu nedenle, her komut çalıştırdıktan sonra history -a; history -nyürütülür ve bashgeçmişiniz senkronize edilir.

Teşekkürler! Neden daha önce izin verilmediğini bilmiyorum ama şimdi yeni terminallerle bu beklendiği gibi çalışıyor! Sanırım normalde history -adeğiştirilmemiş bashrc ile bir terminalde de kullanabilmeliyim.
n611x007

bunun performans sonuçları hakkında ne zaman endişelenmeye başlaması gerekir? (Düşük uçlu cihazları düşünüyorum, bunun ne kadar büyük bir yük oluşturduğundan emin değilim.)
n611x007

1
Ayrıca zaten bir komut istemi olabilir, bu durumda kullanmak daha iyidirexport PROMPT_COMMAND="${PROMPT_COMMAND};history -a; history -n"
Fabian

Eğer ${PROMPT_COMMAND}bu çünkü lider bir hata veriyor boş olduğunu;
Boris Dappen

@ BorisDäppen haklı, ancak bu kolayca düzeltilebilirexport PROMPT_COMMAND="${PROMPT_COMMAND}${PROMPT_COMMAND:+;}history -a; history -n"
TML
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.