¿Cómo hacer que bash (Terminal.app) recuerde el historial de sesiones anteriores?


11

En mi computadora en el trabajo, mi shell de bash recuerda el historial de sesiones anteriores, incluso si acabo de abrir una nueva terminal.
En mi computadora en casa, esto no sucede.
Tengo el mismo sistema operativo 10.6.8 en ambas máquinas y no tengo ninguna configuración relacionada con el historial .bash_profile.
¿Cómo podría configurar esto en la computadora de mi casa para que recuerde el historial de las sesiones?


También preguntado en superuser.com/q/421544/4714
glenn jackman

Respuestas:


11

Tendrá que decirle a bash dónde guardar su archivo de historial y cuántas líneas guardar:

# Set the location of your HISTFILE
echo "export HISTFILE=/Users/<USERNAME>/.bash_history" >> ~/.bash_profile

# Number of lines to keep (1000 in this example)
echo "export HISTFILESIZE=1000" >> ~/.bash_profile

# Set how many commands to keep in the current session history list
echo "export HISTSIZE=80" >> ~/.bash_profile

# Ignore commands that start with a space
echo "export HISTIGNORE=\"&:[ ]*:exit\"" >> ~/.bash_profile

3
Todo eso debería ser innecesario por defecto. La configuración predeterminada de bash (al menos en Mac OS X) habilita el historial de comandos.
Chris Page

Palabra clave, / debería /. Si el suyo no está registrando el historial, esto obligará a bash a mantener el historial en init.
Aaron Lake

2
No solo debería , sino que lo hará, a menos que se haya hecho algo para suprimir el comportamiento del historial predeterminado, en cuyo caso, simplemente colocar algunos valores en estas variables es simplemente ocultar el problema real. Si esta respuesta resuelve el problema, entonces algo más está realmente desordenado y debe solucionarse para evitar otros problemas.
Chris Page

Puede configurar estos ajustes, pero encontré una solución / respuesta más simple si solo desea "habilitar" el historial en el terminal. Simplemente funcionó bien para mí apple.stackexchange.com/a/220667/243988 (estoy usando macOS High Sierra)
jpruizs

4

Acabo de descubrir que tenía un problema similar, aunque mi empleador solo tiene dos Macs, y ninguno se sienta en mi escritorio. Inaceptable, pero una batalla para otro momento.

De todos modos, en casa, Mac Mini (migrado de MacBook Pro) no cooperó incluso después de la configuración .bashrcy / o .profile. Luego descubrí que mi ~/.bash_historyarchivo era misteriosamente propiedad de root. Tenía que hacer esto:

sudo -iu root
cd ~(myusername)
chown (myusername) .bash_history

(Sí, sé que se puede hacer con menos comandos. Hábito).

Luego salí de la Terminal y comencé una nueva. Woot! Todo tipo de historia previamente perdida regresó rápidamente. Que lindo

Probabilidad de que cualquiera que lea esto se haya puesto accidentalmente en esta situación: 0.2%. Estoy seguro de que arruiné esto cuando "celosamente" arreglaba algo más.


4

Tuve este problema y lo que funcionó para mí fue crear un archivo llamado .bash_sessions_disableen mi carpeta de usuario ( ~/).

Básicamente, OS X crea archivos de historial en la .bash_sessionscarpeta para cada sesión (en mi caso, uno para cada pestaña). E incluso cerrando adecuadamente estas sesiones, OS X no reproduce el histórico en .bash_history.

Crear el .bash_sessions_disabledeshabilita este comportamiento.

touch ~/.bash_sessions_disable

Deshabilitar el historial de comandos por sesión, el comportamiento predeterminado, es lo contrario de lo que se solicita.
Chris Page

@ChrisPage Eso solo es correcto si el interlocutor pregunta sobre los historiales por sesión, lo cual no parece ser el caso ("recordar el historial entre sesiones"). Deshabilitar el comportamiento de la sesión bash PERMITE reproducir un solo historial en .bash_historylugar de mantener el historial en la .bash_sessions/carpeta. Esta es la respuesta correcta en mi humilde opinión.
Matt H

@MattH La pregunta pregunta cómo hacer que el historial vuelva a funcionar, porque parece que no funciona en absoluto, y deshabilitar esta función de historial por sesión no va en la dirección correcta. Si hay un error en el mecanismo del historial por sesión, alguien debe presentar un informe de error, pero presentar una respuesta como si apagarlo sea de alguna manera generalmente correcto para todos los usuarios es ... incorrecto. Normalmente funciona bien. Vea mis comentarios sobre las diferentes respuestas para obtener más información.
Chris Page

También debería haber mencionado esto cuando comenté inicialmente: deshabilitar todo el mecanismo de salvar / restaurar bash se entiende como último recurso y debería evitarse si es posible. Simplemente puede desactivar el comportamiento del historial de comandos por sesión estableciendo SHELL_SESSION_HISTORYen 0, como se documenta en /etc/bashrc_Apple_Terminal.
Chris Page

1

Esta respuesta de este hilo de Reddit me salvó:

Probablemente sea RVM evitando el "gancho" de salida para que bash_sessions se ejecute. Si comenta la siguiente línea en su .bash_profile, debería funcionar.

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

0

También tuve un problema similar, no se registró historia. Las soluciones dadas no funcionaron, pero finalmente descubrí que el problema era tan simple como la falta de .bash_history

La solución fue ir /home/[username]/y agregar un archivo .bash_history, entonces

nano .bash_history

y luego escriba cualquier cosa en el archivo (de lo contrario no se creará), salga y guarde. Después de esto, la historia comenzó a funcionar normalmente.


Si esto resuelve el problema, entonces algo más está mal y debe solucionarse para evitar otros problemas. Si inicia Bash cuando no hay un archivo de historial, creará uno. Si no intenta crear uno, o no puede crearlo, hay algo mal con algún script de inicio de shell o los permisos del directorio de inicio. Por ejemplo, vea la respuesta: apple.stackexchange.com/a/118764/6883
Chris Page
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.