Saya menggunakan beberapa terminal Konsole. Dan saya ingin semua perintah yang saya ketik di setiap terminal disimpan dalam histori perintah, sehingga konsole berikutnya yang saya buka akan memiliki semuanya. Untuk mencegah agar setiap terminal tidak menulis histori perintah terminal lainnya, saya memberikan pengaturan berikut ini di.bashrc
# avoid duplicates and commands starting with space
export HISTCONTROL=ignoredups:erasedups:ignorespace
# append history entries..
shopt -s histappend
#My machine reboots without warning sometimes.Hence to save commands instantaneously.
export PROMPT_COMMAND="history -a"
export HISTSIZE=1000
PS1="\[\e[1;34m\]\! \[\e[0m\]"$PS1
Saya memberi baris terakhir untuk melihat nomor perintah di prompt saya. Perintah no. belum pernah melampaui 600, tetapi masih beberapa perintah lama saya hilang dari sejarah. Ada banyak perintah yang diberikan berulang kali, tetapi seperti yang diharapkan ignoredups
, itu tidak pernah meningkatkan perintah no in prompt. Namun perintah lama masih menghilang. Dan jumlah perintah dalam sejarah selalu tersisa sedikit lebih dari 500.
The .bash_history
File masih mengandung banyak duplikat terlepas dari ignoredups.
PS: Output gema $HISTSIZE
dan $HISTFILESIZE
keduanya=1000
Pembaruan: Saya menemukan masalah pada entri di atas untuk .bashrc
. Hanya menelepon history -a
dalam PROMPT_COMMAND
hanya menambahkan perintah baru terakhir untuk .bash_history tersebut. Jadi ignoredups
dan erasedups
tidak berpengaruh.
Apakah ada cara, saya masih bisa menulis ke .bash_history tanpa duplikat dari setiap terminal? Saya tidak ingin memuat seluruh histori pada setiap command prompt dengan history -r
dan menuliskannya kembali history -w
, karena perintah yang saya keluarkan di satu terminal juga akan muncul di terminal berjalan paralel lainnya. Saya ingin perintah gabungan hanya muncul di terminal baru.
Teka-teki, mengapa sejarah saya dipangkas menjadi 500 diselesaikan. Saya perhatikan itu terjadi setiap kali saya ssh ke mesin ini. Membuat .bash_profile
dengan entri berikut menyelesaikan masalah ini.
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
Sekarang .bashrc saya dieksekusi setiap kali saya ssh juga. Dan ukuran file sejarah sekarang meningkat secara monoton.
bug-bash
milis satu tahun setelah pertanyaan ini diposting: lists.gnu.org/archive/html/bug-bash/2013-07/msg00092.html