¿Por qué el historial de bash en mi mac no se guarda?

21

Siempre he usado bash para trabajar y nunca tuve problemas con él. Ahora, no guarda ningún comando en el historial otra vez. Si abro un terminal de ventana, pruebe algunos comandos, actúa como si todo hubiera funcionado bien y me mostró el historial con las teclas de flecha. Pero si cierro la ventana (y es el momento en que se supone que se debe guardar en el archivo .bash_history) y abro otro, no hay signos de los últimos comandos.

¿Cómo puedo averiguar qué está saliendo mal? O restablece todo desde blanco.

    
pregunta abaini01 08.12.2015 - 18:31

5 respuestas

21

Hice esto:

Agregar una variable al archivo .bash_profile

SHELL_SESSION_HISTORY=0

reinicia el terminal y después de eso está funcionando como me gustaría. (Guardó los comandos después de que cerré el terminal)

P.S. También utilizo las variables HISTFILESIZE y HISTSIZE

HISTSIZE es el número de líneas o comandos que se almacenan en la memoria en una lista de historial mientras su sesión de bash está en curso.

HISTFILESIZE es el número de líneas o comandos que (a) se permiten en el archivo histórico en el momento de inicio de una sesión, y (b) se almacenan en el archivo histórico al final de su sesión de bash para usar en sesiones futuras .

    
respondido por el Sysqa 23.12.2015 - 11:14
6

Comenzando en OS X 10.11 El Capitan , el script instalado por el sistema /etc/bashrc_Apple_Terminal se coordina con el Terminal para guardar / restaurar historiales de comandos separados para cada terminal restaurado para Reanudar .

Lea los comentarios en /etc/bashrc_Apple_Terminal para obtener una explicación de cómo administra los historiales de comandos por terminal y cómo personalizarlos.

Si personaliza PROMPT_COMMAND , asegúrese de concatenar con el valor anterior para no eliminar el comando suministrado por el sistema:

PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND; }your_code_here"

Si instala un controlador de señal EXIT con trap , asegúrese de hacer algo similar (o llame a shell_session_update desde su controlador si no puede averiguar cómo concatenar con el valor anterior; es un poco complicado).

Al salir del shell, este código guardará los nuevos comandos en el historial del terminal en ~/.bash_sessions . Para ver si encuentra algún problema, en lugar de cerrar el terminal, cierre el shell manualmente con exit (o Control-D). Registra los mensajes de progreso. Tenga en cuenta si no se completa o si se muestra algún tipo de mensaje de advertencia o error.

En general, bashrc_Apple_Terminal intenta detectar y deshabilitar el historial por sesión si parece que el usuario ha realizado personalizaciones que no son compatibles con él. Parece que puedes haber encontrado uno que no maneja. Considere presentar un informe de error con Apple: enlace

    
respondido por el Chris Page 16.12.2015 - 14:33
5

Por si acaso hay otros por ahí que tienen instalado RVM (Ruby Version Manager): verifica si tiene la siguiente línea en tus archivos ~/.profile , ~/.bashrc o ~/.bash_profile .

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

  

Es probable que RVM impida el "gancho" de salida para que se ejecuten bash_sessions.

Ese fue el problema para mí. Intenta comentarlo.

Fuente: Reddit

    
respondido por el Nate 01.02.2017 - 08:08
2

También puede crear un archivo .bash_logout con lo siguiente:

shell_session_update

Obtenido del comentario de GitHub

    
respondido por el Hunter 16.09.2017 - 21:28
1

En una instalación nueva de Mac OS X (actualizada a 10.13.6), el historial de comandos de bash no se estaba guardando. Tampoco hubo archivos .bashrc o .bash_profile. En este caso, solo agregar un archivo .bashrc vacío lo arreglé para mí.

touch .bashrc

Eso parece ser todo lo que necesitas ...

    
respondido por el Vesal 10.08.2018 - 23:22

Lea otras preguntas en las etiquetas