Bagaimana Zsh melacak riwayat perintah?
Saya melihat dua file di direktori home saya: .zhistory
dan .zsh_history
. Apa perbedaan di antara mereka? File-file itu sepertinya berisi semua riwayat saya. Apakah Zsh terus menambahkan baris ke salah satu dari mereka selamanya ? Bukankah itu membuat pencarian sejarah terlalu lambat?
Dapatkah saya membuat tautan simbolik file-file ini dengan aman ke lokasi lain? (mis. repositori git untuk melacak perubahan pada histori)
zsh
command-history
Amelio Vazquez-Reina
sumber
sumber
~/.zshrc
dan / atau/etc/zshrc
untuk yang dijelaskan di sana zsh.sourceforge.net/Guide/zshguide02.html#l17Jawaban:
Zsh menyimpan baris input (mungkin dengan informasi waktu) dalam file yang ditunjukkan oleh variabel
HISTFILE
. Ini harus berupa nama file absolut (jika tidak akan ditafsirkan relatif terhadap direktori apa pun saat ini pada saat itu).Zsh tidak memiliki nilai bawaan bawaan untuk
HISTFILE
. Distribusi zsh dilengkapi dengan wizard pengaturan untuk pengguna baru yang memiliki nilai~/.histfile
bawaan, jadi inilah yang didapat pengguna zsh secara default. Oh-my-zsh hadir denganHISTFILE=.zhistory
preset. Jadi sepertinya Anda mencoba zsh baik dengan pengaturan default dan dengan oh-my-zsh. Periksa.zshrc
(atau tanggal file) Anda untuk melihat mana yang sedang Anda gunakan.Bagaimana zsh membuka file, dan oleh karena itu apa yang terjadi jika itu adalah tautan simbolik, tergantung pada beberapa opsi.
append_history
(diatur secara default),inc_append_history
ataushare_history
disetel, atau ketika riwayat disimpan secara eksplisitfc -AI
, zsh menambahkan ke file yang ada.Perhatikan bahwa bahkan di bawah pengaturan ini, zsh sesekali menimpa file seperti yang dijelaskan di bawah ini untuk memangkasnya menjadi ukuran.
hist_save_by_copy
diatur (diatur secara default sejak zsh 5.0, tetapi tidak ada di 4.2), zsh menulis file sementara lalu memindahkannya di tempat ketika selesai. Dalam hal ini, jika file riwayat adalah tautan simbolik, file baru menggantikan tautan simbolik.Daripada mengarahkan zsh ke tautan simbolis, atur
HISTFILE
ke mana pun Anda ingin file riwayat berada.Berapa banyak baris sejarah disimpan dikonfigurasi melalui variabel
HISTSIZE
danSAVEHIST
.HISTSIZE
adalah jumlah maksimum baris yang disimpan dalam suatu sesi danSAVEHIST
merupakan jumlah maksimum baris yang disimpan dalam file histori.Untuk mendapatkan beberapa riwayat yang tersimpan sama sekali, Anda perlu mengatur keduanya
HISTFILE
danSAVEHIST
, karena nilai defaultSAVEHIST
adalah 0. Anda mungkin ingin meningkatkanHISTSIZE
juga (pada zsh 5.0, standarnya hanya 30).sumber