Cómo desactivar el uso compartido del historial entre las pestañas iTerm2 cuando no se encuentra el comando setopt

2

Estoy experimentando el mismo problema que en esta pregunta: El historial se comparte entre las pestañas de mi terminal iTerm2: ¿cómo puedo desactivarlo? . Como lo describe el usuario, mi historial se comparte entre diferentes pestañas y ventanas en iTerm2, lo cual es muy molesto.

No puedo usar la solución sugerida para la pregunta vinculada, ya que no puedo usar el comando setopt :

-bash: setopt: command not found

Estoy usando iTerm2 Build 3.0.12 en OS X El Capitan, 10.11.6 y GNU bash, versión 3.2.57 (1) -release (x86_64-apple-darwin15) y tmux 2.3. Cuando inicio solo tmux, también recibo el siguiente mensaje de error:

tmux
-bash: iterm2_preexec_invoke_cmd: command not found

Eliminar mi perfil / configuración de usuario de iTerm2 y comenzar con un "nuevo", iTerm2 no personalizado no ayudó.

¿Alguno de ustedes tal vez tenga una idea de lo que podría intentar? Gracias!

Editar :

Aquí está la salida de shopt -p | grep histappend :

$ shopt -p | grep histappend
shopt -u histappend

y 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

Mi salida para $PROMPT_COMMAND parece muy larga, ya que cambié el comportamiento predeterminado del comando de historial, para mantener un historial de bash "eterno" (basado en esta respuesta ). Nunca sospeché que esto podría causar el extraño comportamiento de historial compartido en iTerm, ya que ya tenía esto en mi ~/.bashrc antes de que empezara el problema.

La parte relevante de mi ~/.bashrc se ve así:

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

1 respuesta

4

Es la parte history -a de PROMPT_COMMAND en su .bashrc , que se agrega al archivo de historial cada vez que se muestra un mensaje, independientemente de la pestaña que esté usando. Una solución rápida sería eliminar esto, de modo que la sesión de cada pestaña solo escriba en .bash_history cuando finalice la sesión (por ejemplo, cuando la pestaña esté cerrada).

A me gusta este comportamiento (se agrega inmediatamente a .bash_history ), ¡y sospecho que usted también puede hacerlo! Una solución mejor podría ser mantener historias separadas para cada sesión / pestaña - una de las respuestas a esta pregunta describe cómo lograrlo. Puede conservar los apéndices inmediatos, pero para separar los archivos, uno para cada sesión. Aún podría buscar en todo su historial de bash con un comando como grep "foo" ~/.bash_hist* . (No lo he intentado personalmente: uso un archivo de historial para todas las sesiones, ya que mi flujo de trabajo normal suele estar en una pestaña o en screen , y archivo mi /bash_history periódicamente en un archivo separado, como se describe a href="http://mywiki.wooledge.org/BashFAQ/088"> en este artículo , que vale la pena leer, incluso si no aborda su problema).

    
respondido por el John N 02.12.2016 - 11:50

Lea otras preguntas en las etiquetas