tarih zsh ile korunmaz


18

Ne zaman yeni bir terminal örneği açsam, geçmiş boştur. Neden? Bir şey ayarlamam gerekir mi? Bash'da buna gerek yok.


Emin değilim zsh, ancak varsayılan basholarak çıkışta geçmiş dosyalarına yazar , yani daha önce kullanmadıysanız ve bazı kabukları açmadıysanız, hepsi en az bir oturum kapatılana kadar şimdi geçmişi gösterecek ve böylece geçmiş dosyasını yazacaktır.
DopeGhoti

Yanıtlar:


25

Bash ve zsh'nin farklı varsayılanları vardır. Zsh, geçmişi varsayılan olarak bir dosyaya kaydetmez.

Zsh'yi bir yapılandırma dosyası olmadan çalıştırdığınızda, bir yapılandırma arabirimi görüntüler. Bu yapılandırma arayüzünde şunu seçin:

(1)  Configure settings for history, i.e. command lines remembered
     and saved by the shell.  (Recommended.)

ardından önerilen ayarları inceleyin ve

# (0)  Remember edits and return to main menu (does not save file yet)

(2) tamamlama, (3) tuş bağlama ve (4) seçenekleri için diğer alt menüler için tekrarlayın ve ardından

(0)  Exit, saving the new settings.  They will take effect immediately.

ana menüden.

Geçmişle ilgili önerilen ayarlar

HISTFILE=~/.histfile
HISTSIZE=1000
SAVEHIST=1000
setopt appendhistory

Geçmiş dosyasının zsh'ın geçmiş dosyasını belirtmek için farklı bir ad kullanırdım. Ve modern bir sistemde 1000 hat arttırılabilir.

HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=10000
setopt appendhistory

Bu çizgiler ~/.zshrcbu arada giriyor .


10

Mevcut cevap doğru olsa da, muhtemelen appendhistorygeçmişinizi kaydetmek için daha iyi bir seçenek olduğunu eklemeye değeceğini düşündüm ve bu SHARE_HISTORY.

Dokümanlardan SHARE_HISTORY"her ikisi de geçmiş dosyasından yeni komutları içe aktarır ve ayrıca yazdığınız komutların geçmiş dosyasına eklenmesine neden olur". Bu, mermilerin mevcut olanı kapatmak veya yeni bir tane açmak zorunda kalmadan birbirlerinin geçmişinin de farkında olduğu anlamına gelir.

Yani, hep birlikte bunu şöyle ayarlarsınız:

HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=1000
setopt SHARE_HISTORY

2
+1 ve U / L'ye hoş geldiniz, ancak kişisel olarak tercih ediyorum INC_APPEND_HISTORY_TIME, bu da yukarıdaki gibi tüm terminallerden tarihe yazıyor, ancak bu geçmiş "kabuğun aynı geçmiş dosyasını kullanan diğer örneklerinden hemen kullanılamayacak". Bu benim için daha anlamlı.
Sparhawk

2
Teşekkürler! Evet bu yeterince adil ve neden INC_APPEND_HISTORY_TIMEdaha mantıklı bir anlam taşıyabildiğini tamamen görebiliyorum . Muhtemelen "daha iyi" dememeliydim, sanırım bu sadece kişisel tercih meselesi!
bert

0

bash'den zsh'a ilk geçiş yaptığınızda, bash geçmişiniz taşınmaz. Yani bash'taki tüm tarih hala bash'ın geçmiş dosyasında. zsh, geçmişi kabuk olarak kullanmaya başladığınız andan itibaren yakalamaya başlar.

Geçmişi yakalamak için ayarlamadıysanız, yapılandırma sihirbazını yeniden çalıştırabilir ve zsh'a ne kadar geçmiş kaydedileceğini söyleyebilirsiniz. ~ / .Zshrc adını değiştirin veya sihirbazda yeni bir çekim yapmak için silin.


0

Çalışmıyorsa ve bunların tümü zaten varsa, şunu deneyin:

fc -W

Bu, geçerli geçmişi geçmiş dosyasına yazar. Ve eğer alırsanız:

zsh: locking failed for /home/username/.zsh_history: permission denied

dosya ve üst dizindeki izinleri kontrol etme zamanı gelmiştir .

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.