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 es jedoch laufen echo $HISTFILE
lasse, druckt es aus /Users/myusername/.bash_sessions/EE8689E5-7DAD-4018-817E-0AF1DE36082A.historynew
.
Ich bin der Eigentümer der Datei .bash_history, daher bin ich mir nicht sicher, wie ich dieses Problem beheben soll.
Vielen Dank!
$HISTFILE
sich aus Interesse zu ändern ? Ich habe kein.bashrc
OSX undecho $HISTFILE
berichte über die erwartete Position. Hat das Auskommentieren der fraglichen Zeilen irgendeine Auswirkung?HISTFILE="$HOME/.bash_history”
. Ohne die Anführungszeichen ist Ihre Version ungültig, wenn der Pfad zu Ihrem Ausgangsverzeichnis Leerzeichen (oder möglicherweise andere Sonderzeichen) enthält.Antworten:
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
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:
Apple hat bereits seit der Veröffentlichung von El Capitan ein gewisses Verhalten geändert, daher ist es besser, hier mehr darüber zu lesen
less /private/etc/bashrc_Apple_Terminal
quelle
~/.bash_sessions_disable
Datei ist als letzter Ausweg gedacht, falls ein Problem vorliegt, das nicht speziell gelöst werden kann. Es werden nicht nur die Befehlsverläufe pro Sitzung deaktiviert. Sie können auch nur die Befehlsverläufe pro Sitzung deaktivieren. Siehe die Kommentare in/etc/bashrc_Apple_Terminal
für Details.export SHELL_SESSION_HISTORY=0
.bashrc
und.bash_profile
unix.stackexchange.com/a/310150/15362Nach dem El Capitan-Upgrade ist mir etwas Ähnliches aufgefallen. Durch einfaches Hinzufügen der Datei
.bash_sessions_disable
file in Ihrem Home-Verzeichnis werden die neuen Bash-Sitzungen deaktiviert und die.bash_history
wird wieder verwendet.Dieser Reddit-Thread enthält weitere Informationen und Links.
quelle
~/.bash_sessions_disable
Datei ist als letzter Ausweg gedacht, falls ein Problem vorliegt, das nicht speziell gelöst werden kann. Es werden nicht nur die Befehlsverläufe pro Sitzung deaktiviert. Sie können auch nur die Befehlsverläufe pro Sitzung deaktivieren. Siehe die Kommentare in/etc/bashrc_Apple_Terminal
für Details.SHELL_SESSION_HISTORY=0
an der Spitze~/.bash_profile
.Sie können das RVM-Problem lösen, indem Sie auf die neueste RVM-Version aktualisieren oder Folgendes ausführen:
Weitere Informationen finden Sie unter https://github.com/rvm/rvm/issues/3540 .
quelle
Diese Antwort aus dem Reddit-Thread hat mich gerettet:
quelle
Wenn es sich um einen Mac handelt, ist die Standardanmeldeshell wahrscheinlich
bash
und wird.profile
stattdessen ausgeführt.bashrc
. Sie haben also die falsche Datei bearbeitet.quelle
$HISTFILE
in verschiedenen Teilen von Echoprofile
? Vielleicht schreiben Sie ein anderes Skript, das die Variable ändert? Ich habe beideTerminal
undiTerm
,bash
3
und4
beide haben ihren Standard$HOME/.bash_history
.$HISTFILE
ändert. Machenecho $HISTFILE
Sie einfach zwei Surround Ihren Code. Was Sie tun müssen, ist, den Code zu finden, an dem sich$HISTFILE
Änderungen ergeben, indem Sie beideecho $HISTFILE
Zeilen zeilenweise näher und näher zueinander bewegen , bis etwas sichtbar wird. Das ist alles.echo $HISTFILE
jede Zeile, nur um zu sehen, ob es irgendwelche Unterschiede gab. Es druckte jedoch nur/Users/username/.bash_history
unzählige Male. Ich lief dannecho $HISTFILE
in der Shell, und es gab aus/Users/nelsonliu/.bash_sessions/CD275A29-1DF1-4ED8-B8CE-F706B11B812F.historynew
.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).
Diese .bash_history-Datei hatte keinerlei Konsequenzen, daher habe ich eine sudo rm .bash_history gefolgt von einer Berührung von .bash_history durchgeführt, um eine neue zu erstellen.
Jetzt scheint alles in Ordnung zu sein
quelle
~/.bash_profile
Datei hinzugefügt :export HISTTIMEFORMAT='%F %T '