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 history
polecenie 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 .bashrc
pliku 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?
bash
command-history
Craig
źródło
źródło
Odpowiedzi:
erasedups
Powinien 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
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
:(
hrr
do zapamiętania jako „ponowne przeczytanie historii”).źródło