Cara menghentikan riwayat penambahan Bash

9

Saya mengalami banyak masalah dalam mengatur riwayat terminal Bash seperti yang saya inginkan. Saya ingin tidak ada entri duplikat dan jika saya memasukkan perintah saya ingin itu disimpan dan duplikat di atas dihapus.

Masalahnya adalah historyperintah menunjukkan kepada saya itu berfungsi seperti yang saya inginkan, tetapi begitu saya log keluar, duplikat kembali lagi. Saya percaya itu hanya menambahkan sejarah ke yang sudah ada. Saya memiliki baris ini di .bashrcfile saya :

HISTCONTROL=ignoreboth:erasedups
shopt -u histappend

Saya bahkan sudah mencoba uncommenting shopt, tetapi masih menambahkan riwayat pada logout. Bagaimana saya bisa membuat sejarah menjadi persis seperti sebelum saya keluar?

craig
sumber
2
Ada penjelasan yang bagus di sini: unix.stackexchange.com/questions/18212/…
jasonwryan

Jawaban:

7

The erasedupsharus melakukan apa yang Anda inginkan dalam kaitannya dengan duplikat - hanya catatan yang menghapus duplikat dipicu pada saat menambahkan entri baru untuk sejarah dan bahwa itu menghapus semua kejadian lama perintah, meninggalkan hanya terbaru.


Menjawab pertanyaan " Bagaimana saya bisa membuat sejarah menjadi persis seperti sebelum saya keluar? "

Cara saya melihatnya, ini bisa berguna hanya sesekali. (Kalau tidak, mengapa Anda menggunakan histori sama sekali?) Anda dapat melakukannya dengan menerbitkan

history -c; history -r

Ini menghapus semua entri sejarah yang disimpan saat ini dalam memori dan kemudian membaca kembali seluruh riwayat dari file sejarah. Jadi semua perintah yang Anda keluarkan sejak masuk ke sesi shell saat ini dilupakan. Saya merasa cukup berguna dalam situasi ketika saya melakukan banyak pengujian (banyak perintah serupa, tetapi tidak benar-benar duplikat) dan kemudian tidak ingin sejarah saya digerogoti oleh itu - jadi saya memiliki alias untuk itu di .bashrc:

alias hrr='history -c; history -r'

( hrruntuk diingat sebagai "membaca kembali sejarah").

rozcietrzewiacz
sumber