Setiap kali saya membuka instance baru terminal, histori kosong. Mengapa demikian? Apakah saya perlu mengatur sesuatu? Dalam bash, tidak perlu untuk ini.
Setiap kali saya membuka instance baru terminal, histori kosong. Mengapa demikian? Apakah saya perlu mengatur sesuatu? Dalam bash, tidak perlu untuk ini.
Jawaban:
Bash dan zsh memiliki standar yang berbeda. Zsh tidak menyimpan riwayat ke file secara default.
Ketika Anda menjalankan zsh tanpa file konfigurasi, ini akan menampilkan antarmuka konfigurasi. Di antarmuka konfigurasi ini, pilih
(1) Configure settings for history, i.e. command lines remembered
and saved by the shell. (Recommended.)
kemudian tinjau pengaturan yang diusulkan dan pilih
# (0) Remember edits and return to main menu (does not save file yet)
Ulangi untuk submenu lainnya untuk (2) selesai, (3) ikatan tombol dan (4) opsi, lalu pilih
(0) Exit, saving the new settings. They will take effect immediately.
dari menu utama.
Pengaturan terkait riwayat yang disarankan adalah
HISTFILE=~/.histfile
HISTSIZE=1000
SAVEHIST=1000
setopt appendhistory
Saya akan menggunakan nama yang berbeda untuk file histori, untuk menunjukkan itu adalah file histori zsh. Dan 1000 baris dapat ditingkatkan pada sistem modern.
HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=10000
setopt appendhistory
Omong ~/.zshrc
-omong, garis-garis ini masuk .
Meskipun jawaban yang ada benar, saya pikir mungkin ada baiknya menambahkan bahwa mungkin ada opsi yang lebih baik daripada appendhistory
menyimpan riwayat Anda dan ini SHARE_HISTORY
.
Dari dokumen SHARE_HISTORY
"keduanya mengimpor perintah baru dari file riwayat, dan juga menyebabkan perintah yang Anda ketik ditambahkan ke file riwayat". Ini berarti bahwa kerang juga mengetahui sejarah masing-masing tanpa harus menutup yang sekarang atau membuka yang baru.
Jadi, secara keseluruhan Anda akan mengaturnya seperti ini:
HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=1000
setopt SHARE_HISTORY
INC_APPEND_HISTORY_TIME
, yang menulis sejarah dari semua terminal seperti di atas, tetapi sejarah itu "tidak akan segera tersedia dari contoh lain dari shell yang menggunakan file histori yang sama". Ini lebih masuk akal bagi saya, karena dengan begitu saya dapat menelusuri sejarah masing-masing terminal secara mandiri, tetapi semuanya masih dicatat.
INC_APPEND_HISTORY_TIME
mungkin lebih masuk akal. Saya mungkin seharusnya tidak mengatakan "lebih baik", saya kira itu hanya masalah preferensi pribadi pada saat ini!
ketika Anda pertama kali beralih dari bash ke zsh, riwayat bash Anda tidak akan terbawa. Jadi semua riwayat yang Anda miliki di bash masih ada dalam file riwayat bash. zsh mulai merekam riwayat sejak Anda menggunakannya sebagai shell.
Jika Anda tidak mengaturnya untuk mengambil histori, Anda dapat menjalankan kembali wizard konfigurasi dan memberi tahu berapa banyak histori yang akan disimpan. Ubah nama ~ / .zshrc atau hapus untuk mendapatkan kesempatan baru di wisaya.
Jika tidak berfungsi, dan semua ini sudah ada, coba:
fc -W
Itu menulis sejarah saat ini ke file riwayat. Dan jika Anda mendapatkan:
zsh: locking failed for /home/username/.zsh_history: permission denied
maka sudah waktunya untuk memeriksa izin pada file dan direktori induk.
zsh
, tetapi secara defaultbash
menulis ke file histori saat keluar , yang berarti jika Anda belum pernah menggunakannya dan membuka beberapa shell, mereka semua akan menunjukkan histori sekarang sampai setidaknya satu log keluar, dengan demikian menulis file histori nya.