Der Bash-Verlauf wird im Terminal nicht gespeichert

3

Mein Bash-Verlauf wird gespeichert, wenn ich über SSH eine Verbindung zu meinem Mac herstelle, iTerm2 verwende oder starte bash in der eingebauten Terminal-App (jeder Befehl, den ich eingegeben habe bash wird gespeichert) geht aber nicht wenn ich nur die eingebaute Terminal App benutze. Ich habe bereits versucht, die Profile in Terminal zurückzusetzen. Ich habe auch den Besitz und die Berechtigungen von überprüft .bash_history. Später habe ich auch versucht, diese Datei zu löschen. Diese Antwort hat auch nicht geholfen. Meine Standard-Shell ist definitiv bash.

Ph99Ph
quelle
Ohne weitere Details könnte dies ein Duplikat von sein apple.stackexchange.com/questions/50649/… (auch oben verlinkt), apple.stackexchange.com/questions/139807/… oder eine der anderen ähnlichen Fragen hier. Warum probieren Sie entweder die Vorschläge in den Antworten auf die verknüpften Fragen aus oder bearbeiten Sie mehr Details zu Ihrem detaillierten Setup und dem, was Sie bereits in der Frage versucht haben?
nohillside
@patrix Entschuldigung. Ich habe bereits die Vorschläge in der oben verlinkten Frage ausprobiert, bevor ich diese Frage gestellt habe. Ich habe meiner Frage weitere Informationen hinzugefügt.
Ph99Ph
1
Eine Lösung gefunden. Ich hätte es als Antwort hinzugefügt, wenn diese Frage nicht gesperrt worden wäre. Ich musste die folgende Datei ~ / .bash_sessions_disable erstellen, um das in El Capitan eingeführte Verhalten zu deaktivieren. superuser.com/questions/950403/…
Ph99Ph
Die Frage ist meines Erachtens nicht wirklich abgeschlossen. Ich denke, Sie sollten in der Lage sein, Ihre Antwort hier zu posten (und wenn ja, werde ich sie unterstützen, da es für einen SuperUser bereits eine Antwort gibt, bei Ask Different jedoch noch keine).
sideshowbarker

Antworten:

1

Beginnen Sie mit der Eingrenzung der Ursache des Problems, indem Sie Anpassungen im Verlauf von Bash entfernen. Zum Beispiel jeder Code, der Shell-Variablen festlegt, die mit beginnen HIST, oder verwendet set -o um entweder die history oder histexpand Shell-Optionen.

Der Befehlsverlaufscode pro Sitzung in /etc/bashrc_Apple_Terminal versucht, die Kompatibilität mit den Verlaufsvariablen von Bash aufrechtzuerhalten und zu erkennen, wenn der Benutzer wahrscheinlich etwas tut, mit dem er nicht kompatibel ist, und deaktiviert in diesem Fall den Mechanismus (weil der Benutzer etwas willkürliches tut, wie das Laden, Speichern oder Ändern der Geschichte). Wenn Sie jedoch Skripte haben, die das ausführen history Befehl, dieser Code hat keine Möglichkeit, im Voraus zu wissen; Sie müssen entweder Ihren Code aktualisieren, um die Kompatibilität mit dem neuen Sitzungsprotokoll aufrechtzuerhalten, oder das Sitzungsprotokoll durch Festlegen deaktivieren SHELL_SESSION_HISTORY=0 wie in der Dokumentation in beschrieben /etc/bashrc_Apple_Terminal.

Wenn Sie nicht anpassen HISTFILE, HISTTIMEFORMAT oder der histappend Eine weitere zu überprüfende Option ist, ob das oder die Shell-Startskripte geändert wurden PROMPT_COMMAND Variable oder die EXIT Trap, ohne den vorherigen Wert zu verketten, um zu vermeiden, dass er gelöscht wird.

Siehe die Kommentare in /etc/bashrc_Apple_Terminal Hier finden Sie eine Beschreibung, wie der Mechanismus funktioniert und wie er angepasst oder deaktiviert wird.

Chris Page
quelle
0

Sehen diese Antwort von einer ähnlichen Frage. El Capitan hat einige Änderungen vorgenommen, bei denen versucht wird, einen sitzungsabhängigen Verlauf zu erstellen. Sie können Ihr Problem wahrscheinlich beheben, indem Sie einfach ausführen touch ~/.bash_sessions_disable Erstellen Sie eine Flag-Datei, um dieses Verhalten zu deaktivieren.

Tom Anthony
quelle