Zacząłem używać komputera Mac niedawno i zanim zacząłem pracować na Ubuntu.
Załóżmy, że uruchamiam te polecenia jeden po drugim na moim terminalu:
python3 main.py
python3 main2.py
python3 main2.py
python3 main2.py
python3 main2.py
python3 main2.py
python3 main2.py
Załóżmy teraz, że chcę uruchomić python main.py
ponownie, więc kliknę klawisz up. Będę musiał kliknąć klucz dwa razy na Ubuntu, ale 7 razy na Macu.
Jeśli dwa kolejne polecenia są takie same, terminal powinien zapamiętać tylko jedno polecenie zamiast dwóch różnych poleceń.
Jak mogę to zrobić na MacOS?
zsh
a nawet dostosowanie zsh za pomocą różnych skryptów.Odpowiedzi:
Musisz dodać zmienną środowiskową HISTCONTROL do swojej
.bash_profile
. W swoim.bash_profile
dodaj następujący wiersz:Zamknij i uruchom ponownie sesję bash, a duplikaty powinny zniknąć. Alternatywnie, możesz po prostu wykonać ten sam wiersz i zadziała on dla tej sesji (użyj go do przetestowania).
Ze strony podręcznika dla
bash
(w terminalu):źródło
Dlaczego to się dzieje?
MacOS i Ubuntu są skonfigurowane inaczej, aby obsługiwać duplikaty w historii poleceń bash. Te konfiguracje są przechowywane w wielu tak zwanych „ plikach kropkowych ”. Mają one postać ~ / .bash *, a także ogólnosystemowy profil / etc /. Wszystkie te pliki można dostosować do własnych upodobań i odróżniać powłoki interaktywne, powłoki logowania, powłoki zdalne itp. Pliki te są odczytywane w określonej kolejności i pełnią określone funkcje.
Jak uzyskać takie samo zachowanie w systemie macOS?
Jeśli chcesz tylko tego, pojedynczego dostosowania „ignorowania dokładnych duplikatów wiersza poleceń”, możesz przejść z odpowiedzią Allana, tj. Dodać pojedynczą linię na przykład do pliku bash_profile. Nie ma „właściwej drogi”, ale niezliczone opcje.
W przypadku, gdy nie jest to jedyne dostosowanie Twojego basha, może to nie być najlepsza opcja:
Oznacza to, że gdy sprawy stają się bardziej złożone, dobrym pomysłem jest rozłożenie dostosowań na wiele plików, z których każdy jest specjalistyczny i wysoce uporządkowany pod względem zawartości:
Wszystkie
exports
mogą znajdować się we własnych plikach w celu uproszczenia nadzoru.Utwórz plik odczytywany przez bash w katalogu głównym katalogu użytkownika, na przykład o nazwie,
.exports
który zawiera:Musi to być „źródło”, aby plik był odczytywany przez bash podczas interaktywnego uruchamiania:
Alternatywnie, aby upewnić się, że pliki faktycznie istnieją przed załadowaniem
Komenda
. ~/.exports
pobierze źródło~/.exports
w kontekście aktualnie uruchomionej powłoki.źródło
.exports
czytać (pozyskiwać)?HISTCONTROL
jest ustawiona na.bashrc
i~/.bashrc
jest pozyskiwane w~/.bash_profile
czym nie ma potrzeby, abyexport
wHISTCONTROL
zmiennej. Zarówno interaktywna powłoka logowania, jak i interaktywna powłoka będą miały ustawione zmienne.Jednoznaczne zarejestrowanie każdego nowego polecenia jest trudne. Najpierw musisz dodać
~/.profile
lub podobne:Następnie musisz dodać do
~/.bash_logout
:źródło