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

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 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 setoptcomando:

-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 iTerm2/Configuración de usuario y comenzar con un iTerm2 "nuevo", no personalizado, no ayudó.

¿Alguno de ustedes tiene 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

yecho $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 $PROMPT_COMMANDparece tanto tiempo, 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 comportamiento extraño de historial compartido en iTerm, ya que tenía esto en mi ~/.bashrcya antes de que comenzara el problema.

La parte relevante de mi ~/.bashrcse 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"
setoptes específico de zsh: el equivalente de bash es shopt. ¿Podrías correr shopt -p | grep histappendy reportar lo que ves? Además, ¿podría correr echo $PROMPT_COMMANDe informar eso también?

Respuestas (1)

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

Me gusta este comportamiento (se agrega inmediatamente a .bash_history), ¡y sospecho que a ti también te puede gustar! Una mejor solución puede ser mantener historiales separados para cada sesión/pestaña; una de las respuestas a esta pregunta describe cómo lograrlo. Puede conservar los anexos inmediatos, pero en archivos separados, uno para cada sesión. Todavía podría buscar en todo su historial de bash con un comando como grep "foo" ~/.bash_hist*. (Personalmente no he probado esto: uso un archivo de historial para todas las sesiones, ya que mi flujo de trabajo normal tiende a estar en una pestaña o a través de screen, y archivo mi historial /bash_historyperiódicamente en un archivo separado, como se describe en este artículo , lo cual está bien vale la pena leerlo, incluso si no aborda su problema).

¡Muchas gracias, eso lo solucionó! Todavía no he modificado mi .bashrcpara escribir en archivos de historial separados, como se sugiere en las otras publicaciones, por lo que no puedo comentar sobre cómo funciona. Pero ha resuelto mis problemas de historias compartidas.