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:
Kilka innych uwag:
- Wszystko, co powinno być dostępne dla aplikacji graficznych LUB dla sh (lub bash wywoływanego jako sh) MUSI znajdować się w ~ / .profile
- ~ / .bashrc nie może niczego wypisywać
- Wszystko, co powinno być dostępne tylko do logowania, powinno znajdować się w ~ / .profile
- Upewnij się, że ~ / .bash_login nie istnieje.
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:
# Omit duplicates and commands that begin with a space from history.
export HISTCONTROL='ignoreboth';
Musi to być „źródło”, aby plik był odczytywany przez bash podczas interaktywnego uruchamiania:
Pliki
źródłowe Jeśli masz wiele konfiguracji powłoki, możesz podzielić je na kilka podtekstów i użyć wbudowanego źródła, aby załadować je z .bashrc: z dodaniem source ~/.exports
do niego.
Alternatywnie, aby upewnić się, że pliki faktycznie istnieją przed załadowaniem
if [ -f ~/.exports ]; then
. ~/.exports
fi
Komenda . ~/.exports
pobierze źródło ~/.exports
w kontekście aktualnie uruchomionej powłoki.
Jest to szczególnie przydatne w przypadku dodawania aliasów, ponieważ oddzielny plik ułatwia ich ponowne ładowanie po wprowadzeniu zmian.
zsh
a nawet dostosowanie zsh za pomocą różnych skryptów.