Warum passiert das?
MacOS und Ubuntu sind standardmäßig unterschiedlich konfiguriert, um Duplikate im Befehlsverlauf von bash zu verarbeiten. Diese Konfigurationen werden in einer Reihe von sogenannten " Punktdateien " gespeichert . Diese haben die Form von ~ / .bash * sowie das systemweite / etc / profile. Alle diese Dateien können nach Ihren Wünschen angepasst werden und zwischen interaktiven Shells, Login-Shells, Remote-Shells usw. unterscheiden. Diese Dateien werden in einer bestimmten Reihenfolge gelesen und erfüllen bestimmte Funktionen.
Wie bekomme ich das gleiche Verhalten unter macOS?
Wenn Sie nur diese eine einzelne Anpassung von "Ignorieren von exakten Duplikaten von Befehlszeilen" wünschen, können Sie mit etwas wie Allans Antwort fortfahren, dh eine einzelne einzelne Zeile beispielsweise zu Ihrer bash_profile-Datei hinzufügen. Es gibt keinen "richtigen Weg", sondern unzählige Möglichkeiten.
Falls dies nicht die einzige Anpassung für Ihre Bash ist, ist dies möglicherweise nicht die beste Option:
Ein paar andere Anmerkungen:
- Alles, was für grafische Anwendungen oder für sh (oder als sh aufgerufene Bash) verfügbar sein sollte, MUSS sich in ~ / .profile befinden
- ~ / .bashrc darf nichts ausgeben
- Alles, was nur zum Anmelden von Shells verfügbar sein sollte, sollte in ~ / .profile gespeichert werden
- Stellen Sie sicher, dass ~ / .bash_login nicht vorhanden ist.
Das heißt, wenn die Dinge komplexer werden, ist es eine gute Idee , die Anpassungen auf mehrere Dateien zu verteilen, von denen jede auf ihren Inhalt spezialisiert und hoch geordnet ist:
Alle exports
können sich zur vereinfachten Überwachung in ihrer eigenen Datei befinden.
Erstellen Sie eine Datei, die von bash im Stammverzeichnis Ihres Benutzerverzeichnisses gelesen wird. Diese Datei heißt beispielsweise .exports
:
# Omit duplicates and commands that begin with a space from history.
export HISTCONTROL='ignoreboth';
Dies muss "bezogen" werden, damit die Datei beim interaktiven Start per Bash gelesen wird:
Sourcing-Dateien
Wenn Sie viele Shell-Konfigurationen haben, möchten Sie diese möglicherweise in mehrere Unterdateien aufteilen und die integrierte Quelle verwenden, um sie aus Ihrer .bashrc zu laden: mit dem Hinzufügen source ~/.exports
zu dieser.
Alternativ können Sie sicherstellen, dass die Dateien vor dem Laden tatsächlich vorhanden sind
if [ -f ~/.exports ]; then
. ~/.exports
fi
Der Befehl . ~/.exports
wird ~/.exports
im Kontext der aktuell ausgeführten Shell ausgegeben.
Dies ist besonders nützlich, um Aliase hinzuzufügen. Die separate Datei erleichtert das erneute Laden, wenn Sie Änderungen vornehmen.
zsh
und zsh mit verschiedenen Skripten noch weiter anzupassen .