Bagaimana cara kerja perintah sejarah?


8

Ketika saya mengetik perintah apa pun di terminal, itu tidak muncul di ~/.bash_historyfile saya sampai saya keluar dari sesi saya.

Juga, ketika saya mengedit ~/.bash_historyfile saya secara manual (misalnya saya menghapus tiga perintah terakhir), ketika saya mengetiknya historymasih menunjukkan perintah yang saya hapus dari ~/.bash_historyfile. Hanya ketika saya keluar dari sesi saya dan login lagi mereka menghilang.

Bagaimana ~/.bash_historyfile dan historyperintah saya disinkronkan?



"Ketika saya mengetik perintah di terminal" Tidak benar. Ketika Anda menempatkan spasi di depan perintah secara default, itu tidak menyimpan perintah itu.
Rinzwind

@Rinzwind perilaku menyimpan perintah bahkan jika memiliki ruang di depan dapat diubah dengan mengedit nilai variabel lingkungan HISTCONTROL Anda.
sys0dm1n

@ sys0dm1n "secara default"
Rinzwind

Jawaban:


10

Ketika Anda membuka terminal bash, ia memuat konten ~/.bash_historydan membangun sejarah shell aktif (dalam RAM), menambahkan setiap perintah yang dieksekusi di shell itu ke dalamnya - dan hanya untuk itu, bukan ke file.

Hanya ketika Anda menutup terminal bash, riwayatnya ditambahkan ke ~/.bash_historyfile Anda .


Pilihan dari history:

history -a # save the active shell's history to ~/.bash_history (appending)
history -c # clear the active shell's history
history -d NNN # delete row NNN of the active shell's history
history -r # reload the active shell's history from ~/.bash_history (appending)
history -w # save the active shell's history to ~/.bash_history (overwriting)

Opsi untuk ~/.bashrcfile

Jika Anda ingin mengubah perilaku ini sehingga riwayat sementara disimpan ~/.bash_historysecara langsung setelah menjalankan perintah, tambahkan baris ini:

PROMPT_COMMAND="history -a"

Jika Anda juga ingin setiap terminal memuat ~/.bash_historyfile secara otomatis setelah setiap eksekusi perintah, tambahkan baris ini sebagai gantinya:

PROMPT_COMMAND="history -a; history -c; history -r"

Jika Anda ingin mengecualikan perintah tertentu (mis. Semuanya dimulai dengan sudodan cat) agar tidak disimpan, tambahkan baris ini:

HISTIGNORE="sudo*:cat*"
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.