Lebih dari sekali saya secara tidak sengaja menjalankan sejumlah perintah dan mencemari riwayat bash saya. Bagaimana cara menutup terminal saya tanpa menyimpan riwayat bash saya? Saya menggunakan Fedora.
Lebih dari sekali saya secara tidak sengaja menjalankan sejumlah perintah dan mencemari riwayat bash saya. Bagaimana cara menutup terminal saya tanpa menyimpan riwayat bash saya? Saya menggunakan Fedora.
Jawaban:
Riwayat shell Anda disimpan dalam file yang ditunjukkan oleh HISTFILE
variabel. Begitu:
unset HISTFILE
Ini juga berlaku untuk zsh, tetapi tidak untuk ksh yang terus menyimpan ke file yang ditunjukkan oleh $HISTFILE
saat shell dimulai (dan sebaliknya, Anda memutuskan untuk menyimpan histori Anda di ksh setelah Anda memulai shell).
Jawaban singkat:
Ketik ini saat diminta:
$ kill -9 $$
Ini akan membunuh cangkang Anda segera tanpa cangkang mampu melakukan apa pun seperti menjebak sinyal, menyimpan sejarah, mengeksekusi ~/.bash_logout
, memperingatkan tentang pekerjaan yang berhenti, atau hal-hal baik lainnya.
Jawaban panjang:
Catatan: Opsi ini tidak saling eksklusif; mereka semua bisa digunakan sekaligus.
Pilihan 1:
Jika Anda seorang perfeksionis ketika datang untuk mengacaukan file riwayat Anda, maka yang dapat Anda lakukan adalah memodifikasi HISTIGNORE
variabel untuk memasukkan sekumpulan perintah yang tidak ingin direkam. Misalnya, jika Anda menambahkan HISTIGNORE='ls*:cd*'
ke Anda ~/.bashrc
maka setiap contoh ls
dan cd
tidak dimasukkan ke file riwayat Anda.
Pilihan 2:
Jika Anda ingin mengontrol berdasarkan perintah-demi-perintah perintah apa yang tersisa dari riwayat Anda, Anda dapat mengatur HISTCONTROL='ignorespace'
yang akan menghilangkan baris perintah yang dimulai dengan spasi. Menggunakan ignoreboth
juga akan menghilangkan garis yang berulang. Kemudian, menekan spasi sebelum Anda memasukkan perintah akan menyebabkannya tidak muncul di file riwayat Anda.
Opsi 3:
Jika Anda hanya ingin membuatnya ketika Anda menutup terminal, shell segera keluar, Anda dapat trap
memberi sinyal program terminal mengirimkan shell ( xterm
, misalnya mengirim SIGHUP
lalu menunggu shell untuk keluar) dan membuat keluar tanpa menyimpan sejarah ketika menerima sinyal ini. Tambahkan ini ke Anda ~/.bashrc
:
# don't record history when the window is closed
trap 'unset HISTFILE; exit' SIGHUP
kill -9
untuk apa pun kecuali situasi yang mengerikan ketika semuanya gagal.
Saya terkejut melihat tidak ada yang menyarankan history -c
segera sebelum exit
. IINM (saya bukan ahli) yang akan melakukannya dengan baik.
history -r
akan membaca kembali file riwayat, jadi menabung menjadi larangan.
Ada dua variabel lingkungan yang digunakan bash untuk menentukan file histori dan berapa banyak baris untuk ditulis ketika shell keluar.
Anda dapat membuang riwayat sesi Anda dengan salah satu dari ini (ditetapkan selama sesi yang ingin Anda hilangkan dari file riwayat Anda):
HISTFILE=/dev/null
atau
HISTSIZE=0
Salah satu dari ini bekerja dengan baik di Bash on Fedora
Tidak yakin mengapa Anda begitu peduli tentang sejarah perintah Anda. Jika Anda sering membutuhkan perintah tertentu, Anda mungkin akan lebih asyik jika Anda menentukan alias untuknya sehingga Anda bisa mendapatkannya kembali dengan dua kali menekan daripada harus mencarinya dalam sejarah.
Eli sudah memberi Anda jawaban yang benar untuk Bash yang akan ditetapkan HISTSIZE=0
.
Saya hanya akan menambahkan metode untuk melakukannya untuk layar GNU . Tekan Ctrl+A
(urutan pelarian layar) diikuti oleh :scrollback 0
. Ini akan menghapus riwayat scroll-back. Sekarang Anda dapat segera lakukan :scrollback 15000
untuk mengatur ulang ukuran buffer scroll-back.
screen(1)
?
scrollback=0
juga.
Ctrl+a H
juga tidak Ctrl+a :clear
akan menghapus riwayat. Kamu butuh Ctrl+a :scrollback 0
. Anda bisa mengujinya sendiri. Mulai sesi layar baru. Sekarang lakukan a cat /etc/passwd
. Sekarang, lakukan salah satu di atas - Ctrl+a H
atau Ctrl+a :clear
. Sekarang, coba salin dari buffer layar dengan tanda panah yang Ctrl+a [
diikuti untuk naik dan lihat seberapa jauh Anda bisa menyalin. Jika Anda telah melakukan Ctrl+a :scrollback
diikuti oleh clear
, Anda hanya akan pergi sejauh yang Anda lihat di jendela saat ini karena tidak akan ada buffer scrollback.
set HISTFILE
lain kali saya masuk? (katakan saja apakah ini benar atau salah)