Come disattivare la condivisione della cronologia tra le schede iTerm2 quando il comando setopt non viene trovato

2

Sto riscontrando lo stesso problema di questa domanda: La cronologia è condivisa tra le mie schede del terminale iTerm2: come posso disattivarlo? . Come l'utente descrive, la mia cronologia è condivisa tra diverse schede e finestre in iTerm2, il che è molto fastidioso.

Non posso usare la soluzione suggerita per la domanda collegata, dato che non posso usare il comando setopt :

-bash: setopt: command not found

Sto usando iTerm2 Build 3.0.12 su OS X El Capitan, 10.11.6 e GNU bash, versione 3.2.57 (1) -release (x86_64-apple-darwin15) e tmux 2.3. Quando avvio solo tmux, ricevo anche il seguente messaggio di errore:

tmux
-bash: iterm2_preexec_invoke_cmd: command not found

Cancellare il mio profilo iTerm2 / Impostazioni utente e iniziare con un "nuovo" iTerm2 non personalizzato non ha aiutato.

Qualcuno di voi potrebbe avere un'idea di cosa potrei provare? Grazie!

Modifica :

Ecco l'output di shopt -p | grep histappend :

$ shopt -p | grep histappend
shopt -u histappend

e echo $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

Il mio output per $PROMPT_COMMAND sembra così lungo, dal momento che ho modificato il comportamento predefinito del comando history, al fine di mantenere una cronologia di "eterna" bash (basata su questa risposta ). Non ho mai sospettato che ciò potesse causare lo strano comportamento della cronologia condivisa in iTerm, dal momento che ho già avuto questo problema nel mio ~/.bashrc prima che il problema iniziasse.

La parte pertinente del mio ~/.bashrc assomiglia a questa:

##########################################################
# 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"
    
posta TabeaKischka 14.11.2016 - 10:40
fonte

1 risposta

4

È la parte history -a di PROMPT_COMMAND nella tua .bashrc - che viene aggiunta al file di cronologia ogni volta che viene visualizzato un prompt, qualunque sia la scheda che stai utilizzando. Una soluzione rapida sarebbe rimuovere questo, in modo che ogni sessione della scheda scriva solo .bash_history al termine della sessione (ad es. Quando la scheda è chiusa).

I mi piace questo comportamento (aggiunta immediata a .bash_history ), e sospetto che lo possiate anche voi! Una soluzione migliore potrebbe essere quella di mantenere le cronologie separate per ogni sessione / scheda - una delle risposte a questa domanda descrive come ottenerlo. È possibile conservare gli allegati immediati, ma separare i file, uno per ogni sessione. Saresti comunque in grado di cercare l'intera cronologia di bash con un comando come grep "foo" ~/.bash_hist* . (Non l'ho provato personalmente: utilizzo un file di cronologia per tutte le sessioni, poiché il mio normale flusso di lavoro tende ad essere in una scheda o in screen e archivo il mio /bash_history periodicamente in un file separato, come descritto < a href="http://mywiki.wooledge.org/BashFAQ/088"> in questo articolo - che vale la pena di leggere, anche se non risolve il problema).

    
risposta data 02.12.2016 - 11:50
fonte

Leggi altre domande sui tag