Der Bash-Verlauf wird im Terminal nicht gespeichert

Mein Bash-Verlauf wird gespeichert, wenn ich mich über SSH mit meinem Mac verbinde, iTerm2 verwende oder bashin der integrierten Terminal-App starte (jeder von mir eingegebene Befehl bashwird gespeichert), aber nicht, wenn ich nur die integrierte Terminal-App verwende. Ich habe bereits versucht, die Profile im 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. Auch diese Antwort hat nicht geholfen. Meine Standard-Shell ist definitiv bash.

Ohne weitere Details könnte dies ein Duplikat von apple.stackexchange.com/questions/50649/… (ebenfalls oben verlinkt), apple.stackexchange.com/questions/139807/… oder eine der anderen ähnlichen Fragen hier sein. Warum probieren Sie nicht entweder die Vorschläge in den Antworten auf die verknüpften Fragen aus oder bearbeiten weitere Details zu Ihrem detaillierten Setup und was Sie bereits in der Frage versucht haben?
@Patrix Das tut mir leid. Ich habe bereits die Vorschläge in der oben verlinkten Frage ausprobiert, bevor ich diese Frage gepostet habe. Ich habe meiner Frage weitere Informationen hinzugefügt.
Lösung gefunden. Ich hätte es als Antwort hinzugefügt, wenn diese Frage nicht gesperrt gewesen 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/…
Die Frage ist nicht wirklich gesperrt, soweit ich das beurteilen kann. Ich denke also, Sie sollten in der Lage sein, Ihre Antwort hier zu posten (und wenn Sie dies tun, werde ich sie positiv bewerten, denn obwohl es bereits eine Antwort darauf gibt, einen SuperUser, gibt es hier bei Ask Different noch keine).
Nichts, was hier vorgeschlagen wird, scheint auf 10.15.5 mit iTerm2 3.3.9 zu funktionieren. Die Geschichte geht beim Schließen verloren.
Bearbeiten ~/.bash_profilemit SHELL_SESSION_HISTORYhat nichts gebracht. Das Problem bestand darin, .bash_historyBerechtigungen zu haben -rw------- root staff, die von festgelegt wurden /etc/bashrc_Apple_Terminal. Ein bisschen chowning hat es gelöst. Jetzt funktioniert die Geschichte mit iTerm2.

Antworten (2)

Beginnen Sie mit der Isolierung der Problemquelle, indem Sie alle Anpassungen des Bash-Verlaufs entfernen. Beispielsweise jeder Code, der Shell-Variablen setzt, die mit beginnen HIST, oder verwendet set -o, um entweder die Shell-Optionen historyoder festzulegen.histexpand

Der Befehlsverlaufscode pro Sitzung versucht, die /etc/bashrc_Apple_TerminalKompatibilität mit den Verlaufsvariablen von Bash aufrechtzuerhalten, und versucht zu erkennen, wenn der Benutzer wahrscheinlich etwas tut, mit dem er nicht kompatibel sein kann, und deaktiviert den Mechanismus in diesem Fall (weil der Benutzer etwas Willkürliches tut). , wie das Laden, Speichern oder Ändern des Verlaufs). Wenn Sie jedoch Skripte haben, die den historyBefehl ausführen, hat dieser Code keine Möglichkeit, dies im Voraus zu wissen. Sie müssen entweder Ihren Code aktualisieren, um die Kompatibilität mit dem neuen Befehlsverlauf pro Sitzung aufrechtzuerhalten, oder den Verlauf pro Sitzung deaktivieren, indem Sie die Einstellung SHELL_SESSION_HISTORY=0wie in der Dokumentation in beschrieben vornehmen /etc/bashrc_Apple_Terminal.

Wenn Sie HISTFILE, HISTTIMEFORMAToder die histappendShell-Option nicht anpassen, sollten Sie außerdem prüfen, ob Ihre Shell-Startskripte entweder die PROMPT_COMMANDVariable oder den EXITTrap ändern, ohne den vorherigen Wert zu verketten, um ihn nicht zu löschen.

In den Kommentaren finden Sie /etc/bashrc_Apple_Terminaleine Beschreibung, wie der Mechanismus funktioniert und wie Sie ihn anpassen oder deaktivieren können.

Siehe diese Antwort von einer ähnlichen Frage. El Capitan hat einige Änderungen vorgenommen, wodurch versucht wird, eine sitzungsabhängige Geschichte zu erstellen. Sie können Ihr Problem wahrscheinlich beheben, indem Sie einfach ausführen, touch ~/.bash_sessions_disableum eine Flag-Datei zu erstellen, um dieses Verhalten zu deaktivieren.