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 setopt
comando:
-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_COMMAND
parece 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 ~/.bashrc
ya antes de que comenzara 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"
Es la history -a
parte de PROMPT_COMMAND
tu .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_history
cuando 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_history
perió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).
.bashrc
para 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.
Juan N.
setopt
es específico de zsh: el equivalente de bash esshopt
. ¿Podrías corrershopt -p | grep histappend
y reportar lo que ves? Además, ¿podría correrecho $PROMPT_COMMAND
e informar eso también?