El historial de Bash no se recuerda en la Terminal

Mi historial de Bash se recuerda cuando me conecto a mi Mac a través de SSH, uso iTerm2 o inicio bashen la aplicación Terminal integrada (cada comando que escribí bashse guarda), pero no cuando solo uso la aplicación Terminal integrada. Ya intenté restablecer los perfiles en Terminal. También verifiqué la propiedad y los permisos de .bash_history. Más tarde también traté de eliminar este archivo. Esta respuesta tampoco ayudó. Mi shell predeterminado definitivamente es bash.

Sin más detalles, esto podría ser un duplicado de apple.stackexchange.com/questions/50649/… (también vinculado en la parte superior), apple.stackexchange.com/questions/139807/… o una de las otras preguntas similares aquí. ¿Por qué no prueba las sugerencias en las respuestas a las preguntas vinculadas o edita más detalles sobre su configuración detallada y lo que ya ha probado en la pregunta?
@patrix Lo siento. Ya probé las sugerencias en la pregunta ahora vinculada arriba antes de publicar esta pregunta. Agregué más información a mi pregunta.
Encontré una solución. Lo habría agregado como respuesta, si esta pregunta no hubiera estado bloqueada. Tuve que crear el siguiente archivo ~/.bash_sessions_disable para deshabilitar el comportamiento introducido en El Capitan. superusuario.com/questions/950403/…
La pregunta en realidad no está bloqueada por lo que puedo decir. Así que creo que debería poder publicar su respuesta aquí (y si lo hace, la votaré a favor, porque si bien ya hay una respuesta para un superusuario, todavía no hay una aquí en Ask Different).
Nada de lo sugerido aquí parece funcionar en 10.15.5 con iTerm2 3.3.9. La historia se pierde al cerrar.
Editar ~/.bash_profilecon SHELL_SESSION_HISTORYno hizo nada. El problema era .bash_historytener los permisos -rw------- root staffestablecidos por /etc/bashrc_Apple_Terminal. Un poco de chowning lo resolvió. Ahora la historia funciona con iTerm2.

Respuestas (2)

Comience a aislar la fuente del problema eliminando cualquier personalización del historial de Bash. Por ejemplo, cualquier código que establezca variables de shell que comiencen con HIST, o que se utilice set -opara establecer las opciones de shell historyo histexpand.

El código del historial de comandos por sesión /etc/bashrc_Apple_Terminalintenta mantener la compatibilidad con las variables del historial de Bash e intenta detectar cuándo es probable que el usuario esté haciendo algo con lo que no puede ser compatible y deshabilita el mecanismo en ese caso (porque el usuario está haciendo algo arbitrario , como cargar, guardar o modificar el historial). Sin embargo, si tiene scripts que ejecutan el historycomando, ese código no tiene forma de saberlo de antemano; deberá actualizar su código para mantener la compatibilidad con el nuevo historial de comandos por sesión o deshabilitar el historial por sesión configurando como se SHELL_SESSION_HISTORY=0describe en la documentación en /etc/bashrc_Apple_Terminal.

Si no está personalizando HISTFILEo HISTTIMEFORMATla histappendopción de shell, otra cosa que debe verificar es si sus scripts de inicio de shell modifican la PROMPT_COMMANDvariable o la EXITtrampa sin concatenar el valor anterior para evitar borrarlo.

Consulte los comentarios para /etc/bashrc_Apple_Terminalobtener una descripción de cómo funciona el mecanismo y cómo personalizarlo o deshabilitarlo.

Ver esta respuesta de una pregunta similar. El Capitán realizó algunos cambios por los que intenta hacer un historial dependiente de la sesión. Es probable que pueda solucionar su problema simplemente ejecutando touch ~/.bash_sessions_disablepara crear un archivo de bandera para deshabilitar este comportamiento.