Jak zatrzymać dołączanie historii Bash

9

Mam problem z konfiguracją końcowej historii Bash tak, jak chcę. Chciałbym nie mieć zduplikowanych wpisów, a jeśli wprowadzę polecenie, chcę je zapisać, a powyższe duplikaty usunąć.

Problem polega na tym, że historypolecenie pokazuje mi, że działa tak, jak chcę, ale po wylogowaniu duplikaty wracają. Wierzę, że to tylko dodanie historii do istniejącej. Mam w swoim .bashrcpliku następujące wiersze :

HISTCONTROL=ignoreboth:erasedups
shopt -u histappend

Próbowałem nawet odkomentować shopt, ale nadal dołącza historię po wylogowaniu. Jak mogę mieć historię dokładnie taką, jaka jest przed wylogowaniem?

Craig
źródło
2
Jest tutaj dobre wytłumaczenie: unix.stackexchange.com/questions/18212/…
jasonwryan

Odpowiedzi:

7

erasedupsPowinien robić to, co chcesz w odniesieniu do duplikatów - tylko pamiętać, że usuwanie duplikatów jest wyzwalane w momencie dopisywania nowego wpisu do historii i że kasuje wszystkie stare wystąpienia polecenia, pozostawiając tylko najnowsza.


Odpowiadając na pytanie „ Jak mogę mieć historię dokładnie taką, jaka jest przed wylogowaniem?

Z mojego punktu widzenia może to być użyteczne tylko raz na jakiś czas. (W przeciwnym razie dlaczego miałbyś w ogóle korzystać z historii?) Możesz to zrobić, wydając

history -c; history -r

Spowoduje to usunięcie wszystkich wpisów historii przechowywanych obecnie w pamięci, a następnie ponowne odczytanie całej historii z pliku historii. Tak więc wszystkie polecenia wydane od czasu zalogowania się do bieżącej sesji powłoki są zapomniane. Uważam, że jest to bardzo przydatne w sytuacjach, gdy wykonuję wiele testów (wiele podobnych poleceń, ale tak naprawdę nie powiela się), a następnie nie chcę, aby moja historia była przez to zniekształcona - więc mam dla niej alias .bashrc:

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

( hrrdo zapamiętania jako „ponowne przeczytanie historii”).

rozcietrzewiacz
źródło