So deaktivieren Sie die gemeinsame Nutzung des Verlaufs zwischen iTerm2-Registerkarten, wenn der Befehl setopt nicht gefunden wird

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 setoptBefehl 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_COMMANDsieht 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, ~/.bashrcbevor das Problem begann.

Der relevante Teil von mir ~/.bashrcsieht 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"
setoptist zsh-spezifisch - das Bash-Äquivalent ist shopt. Könnten Sie laufen shopt -p | grep histappendund berichten, was Sie sehen? Könnten Sie echo $PROMPT_COMMANDdas auch ausführen und melden?

Antworten (1)

Es ist der history -aTeil von PROMPT_COMMANDin 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_historywenn 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_historyregelmäßig in einer separaten Datei, wie in diesem Artikel beschrieben - was gut ist lesenswert, auch wenn es Ihr Problem nicht anspricht).

Vielen Dank, das hat es behoben! Ich habe meine noch nicht geändert, .bashrcum 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.