Ich habe vor kurzem angefangen, Mac zu benutzen und bevor ich an Ubuntu gearbeitet habe.
Angenommen, ich führe diese Befehle einzeln auf meinem Terminal aus:
python3 main.py
python3 main2.py
python3 main2.py
python3 main2.py
python3 main2.py
python3 main2.py
python3 main2.py
Angenommen, ich möchte python main.py
erneut ausgeführt werden, also klicke ich auf die Aufwärts-Taste. Ich muss auf Ubuntu nur zweimal auf die Taste klicken, auf Mac jedoch siebenmal.
Wenn zwei aufeinanderfolgende Befehle gleich sind, sollte sich das Terminal nur einen Befehl merken, anstatt sich zwei verschiedene Befehle zu merken.
Wie kann ich dies unter macOS erreichen?
zsh
und zsh mit verschiedenen Skripten noch weiter anzupassen .Antworten:
Sie müssen die Umgebungsvariable HISTCONTROL zu Ihrer hinzufügen
.bash_profile
. Fügen.bash_profile
Sie in Ihrem Feld die folgende Zeile hinzu:Schließen Sie Ihre Bash-Sitzung und starten Sie sie neu. Die Dupes sollten verschwunden sein. Alternativ können Sie auch dieselbe Zeile ausführen, die für diese Sitzung wirksam wird (zum Testen verwenden).
Aus der Handbuchseite für
bash
(im Terminal):quelle
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:
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
:Dies muss "bezogen" werden, damit die Datei beim interaktiven Start per Bash gelesen wird:
Alternativ können Sie sicherstellen, dass die Dateien vor dem Laden tatsächlich vorhanden sind
Der Befehl
. ~/.exports
wird~/.exports
im Kontext der aktuell ausgeführten Shell ausgegeben.quelle
.exports
gelesen (bezogen)?HISTCONTROL
ist.bashrc
und~/.bashrc
bezogen~/.bash_profile
wird, istexport
dieHISTCONTROL
Variable nicht erforderlich . Sowohl für eine interaktive Anmeldeshell als auch für eine interaktive Shell wird die Variable festgelegt.Es ist schwierig, jeden neuen Befehl eindeutig aufzuzeichnen. Zuerst müssen Sie hinzufügen
~/.profile
oder ähnliches:Dann müssen Sie hinzufügen zu
~/.bash_logout
:quelle