Bash menyimpan daftar perintah secara internal di memori saat sedang berjalan. Mereka ditulis .bash_history
pada saat keluar :
Ketika shell interaktif keluar, $ HISTSIZE baris terakhir disalin dari daftar riwayat ke file bernama $ HISTFILE
Jika Anda ingin memaksa sejarah perintah untuk ditulis, Anda dapat menggunakan history -a
perintah, yang akan:
Tambahkan baris histori baru (baris histori dimasukkan sejak awal sesi Bash saat ini) ke file histori.
Ada juga -w
opsi:
Tuliskan riwayat saat ini ke file riwayat.
yang mungkin lebih cocok untuk Anda, tergantung pada bagaimana tepatnya Anda menggunakan riwayat Anda.
Jika Anda ingin memastikan bahwa mereka selalu ditulis segera, Anda dapat memasukkan perintah itu ke PROMPT_COMMAND
variabel Anda :
export PROMPT_COMMAND='history -a'
.bash_history
file Anda secara tidak sengaja menjadi milik root, semuanya berhenti berfungsi. Dalam hal ini, periksa kepemilikan dan gunakansudo
untuk memperbaiki kepemilikan jika diperlukan.(Bukan jawaban tetapi saya tidak bisa menambahkan komentar)
Jika Anda memeriksa
.bash_history
karena Anda hanya ingin menghapus perintah tertentu (misalnya berisi kata sandi yang jelas), Anda dapat langsung menghapus entri dalam memori denganhistory -d <entry_id>
.Misalnya, anggaplah keluaran seperti:
dan Anda ingin membersihkan
export
garis, Anda bisa mencapainya dengan:sumber
bash menyimpannya dalam memori yang berfungsi, bash dapat dikonfigurasikan untuk menyimpannya ketika bash ditutup atau setelah setiap perintah, dan untuk dimuat ketika bash dimulai atau atas permintaan.
Jika Anda mengkonfigurasi untuk menyimpan setelah setiap perintah, maka pertimbangkan implikasi menjalankan banyak bash pada saat yang sama. (baris perintah akan disisipkan)
sumber
bash
exetable. Saya akan menulis "Ini disimpan olehbash
dalam memori, ..."Perintah disimpan dalam memori (RAM) saat sesi Anda aktif. Segera setelah Anda menutup shell, daftar perintah ditulis
.bash_history
sebelum shutdown.Dengan demikian, Anda tidak akan melihat riwayat sesi saat ini di
.bash_history
.sumber
bash
terminasi, yang tidak berarti me-reboot (terutama dalam lingkungan grafis di mana Anda dapat membuka dan menutup terminal sesuai keinginan).Saat berjalan, riwayat disimpan hanya dalam memori (secara default) jika:
H
inecho "$-"
) diatur.0
dan*
(atau pola lain yang sangat membatasi).Jika salah satu di atas gagal, tidak ada riwayat yang disimpan dalam memori dan akibatnya tidak ada riwayat yang bisa atau akan ditulis ke disk.
Riwayat dalam memori ditulis ke disk jika:
Tetapi hanya ketika shell keluar atau jika perintah
history -a
(tambahkan) atauhistory -w
(tulis) dieksekusi.Untuk memicu menulis ke disk langsung Anda dapat menggunakan variabel:
yang akan
append
yangnew
garis sejarah untuk file sejarah. Ini adalah baris sejarah yang dimasukkan sejak awal sesi bash saat ini, tetapi belum ditambahkan ke file riwayat.Atau:
Untuk menimpa riwayat dalam HISTFILE dengan daftar dari memori.
Jadi, Anda dapat menghapus perintah dari sejarah di memori:
Dan tulis ke disk dengan perintah terakhir:
sumber