Karışık tarih


15

GUI modunda, bir kullanıcının birden fazla terminali açık olduğunda, terminaller o kullanıcının geçmiş dosyasını nasıl yeniden yazar? sormamın nedeni, uçbirimlerin her birinde kullanıcının farklı komutları yürütmesinin mümkün olması. Peki, geçmiş dosyası komutları tüm terminallerden mi yoksa yalnızca ilk açılacak olandan mı kaydeder? Yoksa bu durumla başa çıkmak için kullanılan başka bir plan var mı?

Yanıtlar:


11

Tamamen kabuğun onunla nasıl başa çıkacağına bağlı

bashvarsayılan olarak, çıkarken her kabuğun yerel geçmişiyle birlikte geçmiş dosyasının üzerine yazılır, böylece çıkacak son kabuk kazanır. histappendSeçenek yerine ana tarihine eklenecek neden olur ( shopt -s histappend).

zsh varsayılan olarak aynısını yapar ve bununla başa çıkmak için birkaç seçeneğe sahiptir:

  • appendhistory - Her kabuğun geçmişi, kabuk çıktıkça ana geçmiş dosyasına eklenir
  • incappendhistory - Ana kabuk dosyası, herhangi bir kabukta her satır yürütüldüğünde, bu kabuk çıkana kadar beklemek yerine güncellenir
  • sharehistory -- Sevmek incappendhistory , ama aynı zamanda ana geçmiş dosyasındaki değişiklikleri çalışan tüm kabuklara çeker, böylece bir kabukta bir komut çalıştırabilir ve sonra Upbaşka bir kabukta vurabilir ve görebilirsiniz

Şimdi bana bunu Bash'de nasıl yapacağımı söyle lütfen;)
tante

1
@tante Çalışmıyor mu shopt -s histappend?
Michael Mrozek

0

Bu fikri ilk olarak O'Reilly "Unix Elektrikli El Aletleri" kitabından aldım.

Benim .profilesetimde:

export HISTFILE=$HOME/.sh_hist.$$

Her .profileokunduğumda, oturumumun PID'si ile adlandırılan yeni bir geçmiş dosyası alıyorum. Birden fazla giriş bilgim varsa, her giriş benzersiz bir geçmiş dosyası alır. Çalıştığı yerksh ve bash.

Bir X oturumunda yeni terminaller açıyorsanız, bunlar genellikle giriş kabukları değildir, ancak giriş kabukları gibi davranacak şekilde yapılandırabilirsiniz. Örneğin,rxvt +lsrxvt bir giriş kabuğu olarak başlayacaktır . Kullandığınız terminalin belgelerine bakın.

Ayrıca, temizlemek için bir .logoutveya .bash_logoutdosya (veya başka bir yöntem) kullanmadığınız sürece , sonunda bir sürü dosyaya sahip olursunuz .sh_hist.


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.