Ne zaman yeni bir terminal örneği açsam, geçmiş boştur. Neden? Bir şey ayarlamam gerekir mi? Bash'da buna gerek yok.
Ne zaman yeni bir terminal örneği açsam, geçmiş boştur. Neden? Bir şey ayarlamam gerekir mi? Bash'da buna gerek yok.
Yanıtlar:
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 ~/.zshrc
bu arada giriyor .
Mevcut cevap doğru olsa da, muhtemelen appendhistory
geç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
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ı.
INC_APPEND_HISTORY_TIME
daha mantıklı bir anlam taşıyabildiğini tamamen görebiliyorum . Muhtemelen "daha iyi" dememeliydim, sanırım bu sadece kişisel tercih meselesi!
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.
Ç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 .
zsh
, ancak varsayılanbash
olarak çı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.