it-swarm.com.de

Bash-Verlauf wird zwischen Terminalsitzungen auf dem Mac nicht beibehalten

Meine Bash-Geschichte hat auf mysteriöse Weise aufgehört zu funktionieren, und ich habe keine Ahnung, wie ich sie beheben kann. So sieht mein .bashrc aus:

HISTSIZE=500
HISTFILESIZE=500
HISTFILE=$HOME/.bash_history

Wenn ich jedoch echo $HISTFILE ausführe, wird /Users/myusername/.bash_sessions/EE8689E5-7DAD-4018-817E-0AF1DE36082A.historynew ausgedruckt.

Ich bin der Eigentümer der Datei .bash_history, daher bin ich mir nicht sicher, wie ich dieses Problem beheben soll.

Vielen Dank!

28
Nelson Liu

Terminal weist jeder Terminalsitzung eine eindeutige Kennung zu und kommuniziert diese über die Umgebungsvariable TERM_SESSION_ID, sodass Programme, die in einem Terminal ausgeführt werden, den anwendungsspezifischen Status beim Beenden und Neustarten von Terminal mit aktiviertem Resume speichern/wiederherstellen können.

In einem neuen Ordner (~/.bash_sessions /) werden die für Sitzungen spezifischen HISTFILE- und .session-Dateien gespeichert.

Während des Shell-Starts wird die Sitzungsdatei ausgeführt. Alte Dateien werden regelmäßig gelöscht.

Das Standardverhalten sieht vor, dass der Bash-Befehlsverlauf unabhängig für jede wiederhergestellte Terminalsitzung gespeichert und wiederhergestellt wird. Außerdem werden Befehle für neue Sitzungen in den globalen Verlauf eingefügt.

Sie können dieses Verhalten deaktivieren und einen einzelnen Verlauf freigeben, indem Sie festlegen

export Shell_SESSION_HISTORY=0

Wenn HISTTIMEFORMAT definiert ist, ist der Sitzungsverlauf standardmäßig deaktiviert (lesen Sie mehr in/private/etc/bashrc_Apple_Terminal).

Der Sicherungs-/Wiederherstellungsmechanismus ist deaktiviert, wenn die folgende Datei vorhanden ist:

~/.bash_sessions_disable

Apple hat bereits einige Verhaltensweisen seit der Veröffentlichung von El Capitan geändert, daher ist es besser, hier mehr darüber zu lesen. less /private/etc/bashrc_Apple_Terminal

23
diimdeep

Nach dem El Capitan-Upgrade ist mir etwas Ähnliches aufgefallen. Durch einfaches Hinzufügen der Datei .bash_sessions_disable in Ihrem Home-Verzeichnis werden die neuen Bash-Sitzungen deaktiviert und der .bash_history wird wieder verwendet.

Dieser Reddit-Thread enthält weitere Informationen und weiterführende Links.

6
rabs

Sie können das RVM-Problem lösen, indem Sie auf die neueste RVM-Version aktualisieren oder Folgendes ausführen:

  echo 'Shell_session_update' > $HOME/.bash_logout

Weitere Informationen finden Sie unter https://github.com/rvm/rvm/issues/3540 .

5
Alex Rojo

Diese Antwort vom Reddit-Thread hat mich gerettet:

Es ist wahrscheinlich RVM, das verhindert, dass der Exit "hook" für bash_sessions ausgeführt wird. Wenn Sie die folgende Zeile in Ihrem .bash_profile auskommentieren, sollte dies funktionieren.

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
3
noio

Ich habe dieses Problem in High Sierra gesehen. Irgendwie war meine eigene .bash_history im Besitz von root und hatte nicht einmal Leseberechtigungen für andere Benutzer (wenn der Inhalt des Ausgangsverzeichnisses mit ls -al angezeigt wurde).

Da diese .bash_history-Datei nichts von Bedeutung war, habe ich einen Sudo-Befehl .bash_history gefolgt von einem Touch .bash_history ausgeführt, um eine neue zu erstellen.

Jetzt scheint alles in Ordnung zu sein

0
Julian Jordan

Wenn es sich um einen Mac handelt, ist die Standard-Login-Shell bash und führt .profile anstelle von .bashrc aus. Sie haben also die falsche Datei bearbeitet.

0
theoden