Saat berjalan, riwayat disimpan hanya dalam memori (secara default) jika:
- set -o history (an
H
in echo "$-"
) diatur.
- HISTSIZE bukan
0
dan
- HISTIGNORE bukan
*
(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:
- HISTFILESIZE bukan 0 dan
- HISTFILE tidak disetel.
Tetapi hanya ketika shell keluar atau jika perintah history -a
(tambahkan) atau history -w
(tulis) dieksekusi.
Untuk memicu menulis ke disk langsung Anda dapat menggunakan variabel:
PROMPT_COMMAND='history -a'
yang akan append
yang new
garis sejarah untuk file sejarah. Ini adalah baris sejarah yang dimasukkan sejak awal sesi bash saat ini, tetapi belum ditambahkan ke file riwayat.
Atau:
PROMPT_COMMAND='history -w'
Untuk menimpa riwayat dalam HISTFILE dengan daftar dari memori.
Jadi, Anda dapat menghapus perintah dari sejarah di memori:
$ history 5
6359 ls
6360 cd ..
6361 comand --private-password='^%^&$@#)!@*'
6362 top
6363 set +o | less
$ history -d 6361
$ history 5
6359 ls
6360 cd ..
6361 top
6362 set +o | less
$ history -w
Dan tulis ke disk dengan perintah terakhir:
history -w # with `shopt -u histappend` unset
.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.