Ich habe das gleiche Problem wie in dieser Frage: Der Verlauf wird zwischen meinen iTerm2-Terminal-Registerkarten geteilt: Wie kann ich das ausschalten? . Wie der Benutzer beschreibt, wird mein Verlauf zwischen verschiedenen Registerkarten und Fenstern in iTerm2 geteilt, was sehr ärgerlich ist.
Ich kann die für die verknüpfte Frage vorgeschlagene Lösung nicht verwenden, da ich den setopt
Befehl nicht verwenden kann:
-bash: setopt: command not found
Ich verwende iTerm2 Build 3.0.12 auf OS X El Capitan, 10.11.6 und GNU Bash, Version 3.2.57(1)-Release (x86_64-apple-darwin15) und tmux 2.3. Wenn ich nur tmux starte, bekomme ich zusätzlich folgende Fehlermeldung:
tmux
-bash: iterm2_preexec_invoke_cmd: command not found
Das Löschen meines iTerm2-Profils / meiner Benutzereinstellungen und das Starten mit einem "frischen", nicht angepassten iTerm2 hat nicht geholfen.
Hat jemand von euch vielleicht eine Idee, was ich versuchen könnte? Danke!
Bearbeiten :
Hier ist die Ausgabe von shopt -p | grep histappend
:
$ shopt -p | grep histappend
shopt -u histappend
Undecho $PROMPT_COMMAND
$ echo $PROMPT_COMMAND
history -a; history -c; history -r; date | xargs echo -n >>~/.bash_history_workingdir; echo -n ' - ' >>~/.bash_history_workingdir; pwd | xargs echo -n >>~/.bash_history_workingdir; echo -n ' - ' >>~/.bash_history_workingdir; tail -n 1 /Users/tabea/.bash_eternal_history >>~/.bash_history_workingdir; iterm2_preexec_invoke_cmd
Meine Ausgabe $PROMPT_COMMAND
sieht so lange aus, seit ich das Standardverhalten des History-Befehls geändert habe, um einen "ewigen" Bash-Verlauf zu führen (basierend auf dieser Antwort ). Ich hätte nie vermutet, dass dies das seltsame Verhalten der gemeinsamen Historie in iTerm verursachen könnte, da ich dies bereits in meinem hatte, ~/.bashrc
bevor das Problem begann.
Der relevante Teil von mir ~/.bashrc
sieht so aus:
##########################################################
# Eternal bash history.
# ---------------------
# Undocumented feature which sets the size to "unlimited".
# https://stackoverflow.com/questions/9457233/unlimited-bash-history
export HISTFILESIZE=
export HISTSIZE=
export HISTTIMEFORMAT="[%F %T] "
# Change the file location because certain bash sessions truncate .bash_history file upon close.
# http://superuser.com/questions/575479/bash-history-truncated-to-500-lines-on-each-login
export HISTFILE=~/.bash_eternal_history
# Force prompt to write history after every command.
# http://superuser.com/questions/20900/bash-history-loss
export CUSTOM_HISTFILE="~/.bash_history_workingdir" #path of the new history file
export PROMPT_COMMAND="history -a; history -c; history -r; date | xargs echo -n >>$CUSTOM_HISTFILE; echo -n ' - ' >>$CUSTOM_HISTFILE; pwd | xargs echo -n >>$CUSTOM_HISTFILE; echo -n ' - ' >>$CUSTOM_HISTFILE; tail -n 1 $HISTFILE >>$CUSTOM_HISTFILE; $PROMPT_COMMAND"
Es ist der history -a
Teil von PROMPT_COMMAND
in Ihrem .bashrc
- der jedes Mal an die Verlaufsdatei angehängt wird, wenn eine Eingabeaufforderung angezeigt wird, unabhängig davon, welche Registerkarte Sie verwenden. Eine schnelle Lösung wäre, dies zu entfernen, sodass die Sitzung jedes Tabs nur schreibt, .bash_history
wenn die Sitzung endet (z. B. wenn der Tab geschlossen wird).
Ich mag dieses Verhalten (direktes Anhängen an .bash_history
), und ich vermute, Sie mögen es auch! Eine bessere Lösung könnte darin bestehen, separate Historien für jede Sitzung/jeden Tab zu führen – eine der Antworten auf diese Frage beschreibt, wie dies erreicht werden kann. Sie könnten unmittelbare Anhänge beibehalten, aber in separate Dateien - eine für jede Sitzung. Sie könnten immer noch Ihren gesamten Bash-Verlauf mit einem Befehl wie durchsuchen grep "foo" ~/.bash_hist*
. (Ich habe das nicht persönlich ausprobiert: Ich verwende eine Verlaufsdatei für alle Sitzungen, da mein normaler Arbeitsablauf in der Regel in einem Tab oder durch erfolgt screen
, und ich archiviere meine /bash_history
regelmäßig in einer separaten Datei, wie in diesem Artikel beschrieben - was gut ist lesenswert, auch wenn es Ihr Problem nicht anspricht).
.bashrc
um in separate Verlaufsdateien zu schreiben, wie in den anderen Beiträgen vorgeschlagen, daher kann ich nicht kommentieren, wie es funktioniert. Aber es hat meine Probleme mit geteilten Geschichten gelöst.
Johannes N
setopt
ist zsh-spezifisch - das Bash-Äquivalent istshopt
. Könnten Sie laufenshopt -p | grep histappend
und berichten, was Sie sehen? Könnten Sieecho $PROMPT_COMMAND
das auch ausführen und melden?