Untuk beberapa alasan, saya tidak bisa mendapatkan sistem saya untuk menyimpan riwayat BASH saya setelah reboot. Berikut adalah bagian yang relevan dari saya ~/.bashrc:
shopt -s histappend
PROMPT_COMMAND='history -a; updateWindowTitle'
export HISTCONTROL=ignoredups
export HISTSIZE=9999
export HISTFILESIZE=999999
export HISTFILE="$HOME/.bash_history"
Sejauh yang saya tahu itu semua adalah opsi yang diperlukan (saya tahu saya dulu bisa menyimpan sejarah di beberapa reboot tanpa semua ini di masa lalu). Namun, meskipun telah menambahkan opsi ini beberapa reboot lalu, saya masih kehilangan sebagian besar sejarah saya setelah reboot. Ini tidak kosong, tetapi tidak memiliki garis 9999 yang saya miliki sebelum me-reboot.
Sebelum ada yang mengeluh, ya saya sudah baca pertanyaan ini. Saya telah menerapkan beberapa saran mereka sebagaimana tercantum di atas, sisanya tidak membantu atau tidak relevan:
- Hilang riwayat Bash saat menggunakan histappend
- Bagaimana mencegah Bash mengubah riwayat?
- Apa yang menentukan apa yang muncul di perintah bash history?
- Bagaimana cara menjaga riwayat bash saya di seluruh sesi?
- simpan bash history, secara teratur
Jika ada perintah lain yang relevan di sana, Anda dapat melihat keseluruhan saya di ~/.bashrc sini .
Jadi, apa yang saya lewatkan? Mengapa riwayat saya tidak disimpan? Jika ada yang berpikir file lain mungkin relevan beri tahu saya dan saya akan mempostingnya. Saya memeriksa dengan menjalankan grep -i hist \.*di saya $HOMEyang menunjukkan bahwa satu-satunya .file yang relevan berisi string histatau HISTitu .bashrc.
Saya menjalankan Linux Mint Debian Edition, GNU bash, versi 4.2.36 (1) -release (x86_64-pc-linux-gnu) dan terminal emulator favorit saya (dalam kasus yang relevan) adalah terminator.
MEMPERBARUI:
Mengikuti saran @ mpy di komentar, saya mengubah ~/.bashrcpengaturan saya HISTFILE=~/bash_historysebagai kebalikan dari default ~/.bash_historydan yang tampaknya memecahkan masalah untuk shell interaktif . Cangkang login masih menampilkan perilaku yang sama, dengan riwayat terpotong pada 500baris. Namun, tidak ada HISTvariabel terkait yang diatur dalam file yang relevan:
$ for f in /etc/profile ~/.profile ~/.bash_profile ~/.bash_login; do \
echo -ne "$f :"; echo `grep HIST $f`; \
done
/etc/profile :
/home/terdon/.profile :grep: /home/terdon/.profile: No such file or directory
/home/terdon/.bash_profile :grep: /home/terdon/.bash_profile: No such file or directory
/home/terdon/.bash_login :grep: /home/terdon/.bash_login: No such file or directory
$ grep -r HIST /etc/profile.d/ <-- returns nothing
Jadi, mengapa pengaturan HISTSIZEdan HISTFILESIZEdalam ~/.bashrctidak cukup kecuali saya secara eksplisit mengatur $HISTFILEsesuatu selain default ~/.bash_history?
historyperintah, output yang Anda lihat identik dengan apa yang Anda lihat, jalankan cat .bash_history, selain nomor baris? Maksud saya apakah historywaktu daftar perintah perangko atau informasi lainnya? Alasan saya bertanya adalah, jika Anda melihat hal-hal esoterik ini, itu berarti, ada modul / fungsi / program lain, yang mengacaukan sejarah shell dan versi yang salah atau kereta apa pun itu, mungkin menyebabkan Anda bersedih. .
;): Coba file lain sebagai HISTFILE, bukan default ~/.bash_history. Penjelasan yang sangat dikonstruksi: Saya menganggap bash adalah shell default Anda, jadi pada sistem start shell non-interaktif adalah induk dari sesi X Anda (saya juga menganggap Anda menggunakan X), yang tidak akan tahu apa-apa tentang opsi histappend (karena .bashrc hanya dibaca oleh shell interaktif), sehingga selama shell induk ini berjalan semuanya baik-baik saja, tetapi setelah penghentian (yaitu sistem berhenti) itu akan menimpa ~/.bash_history(yang default) dan mengacaukan sejarah Anda ...
