Eliminé .bash_history, ahora el historial ya no se guarda (aunque lo volví a crear)

Recién he instalado una nueva copia de El Capitán. Accidentalmente eliminé .bash_history, así que lo hice de touch .bash_historynuevo, con la esperanza de que esto resolviera el problema de que mi historial de bash no se recordara al cerrar y volver a abrir la terminal.

Pero no fue así. Y no tengo idea de por qué.

Macbuech:~ josh$ ~/.bash_history
-bash: /Users/josh/.bash_history: Permission denied
Macbuech:~ josh$ ls ~/.bash_history
/Users/josh/.bash_history
Macbuech:~ josh$ echo $HISTSIZE
500
Macbuech:~ josh$ echo $HISTFILESIZE
500
Macbuech:~ josh$ echo $HISTFILE
/Users/josh/.bash_sessions/9817540A-F021-4E1A-93A1-B322BC4738AB.historynew
Macbuech:~ josh$ echo $HISTTIMEFORMAT

Jugué un poco para .bash_profileque algunos colores funcionaran, según este artículo :

export PS1="\[\033[36m\]\u\[\033[m\]@\[\033[32m\]\h:\[\033[33;1m\]\w\[\033[m\]\$ "
export CLICOLOR=1
export LSCOLORS=ExFxBxDxCxegedabagacad
alias ls='ls -GFh'

Retiré todas las cosas nuevamente para asegurarme de que el problema no está ahí. Así que aquí está mi .bash_profile:

[[ -s "$HOME/.profile" ]] && source "$HOME/.profile" # Load the default .profile
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

Este sitio indica que puede haber un problema con RVM, y traté de agregarlo .bash_logout, shell_session_updatepero no tuve éxito.

Cualquier ayuda es muy apreciada.

Aquí está mi env completo:

Macbuech:~ josh$ env
rvm_bin_path=/Users/josh/.rvm/bin
TERM_PROGRAM=Apple_Terminal
GEM_HOME=/Users/josh/.rvm/gems/ruby-2.2.4
SHELL=/bin/bash
TERM=xterm-256color
IRBRC=/Users/josh/.rvm/rubies/ruby-2.2.4/.irbrc
TMPDIR=/var/folders/sq/92dr708946s01kttg916m6xm0000gn/T/
Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.9AJd6SsR1y/Render
TERM_PROGRAM_VERSION=361.1
MY_RUBY_HOME=/Users/josh/.rvm/rubies/ruby-2.2.4
TERM_SESSION_ID=9817540A-F021-4E1A-93A1-B322BC4738AB
rvm_stored_umask=0022
USER=josh
_system_type=Darwin
rvm_path=/Users/josh/.rvm
SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.gZZeyimp2O/Listeners
__CF_USER_TEXT_ENCODING=0x1F5:0x0:0x0
rvm_prefix=/Users/josh
PATH=/Users/josh/.rvm/gems/ruby-2.2.4/bin:/Users/josh/.rvm/gems/ruby-2.2.4@global/bin:/Users/josh/.rvm/rubies/ruby-2.2.4/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/josh/.rvm/bin
rvm_loaded_flag=1
PWD=/Users/josh
_system_arch=x86_64
XPC_FLAGS=0x0
_system_version=10.11
XPC_SERVICE_NAME=0
rvm_version=1.26.11 (master)
SHLVL=1
HOME=/Users/josh
LOGNAME=josh
GEM_PATH=/Users/josh/.rvm/gems/ruby-2.2.4:/Users/josh/.rvm/gems/ruby-2.2.4@global
LC_CTYPE=UTF-8
RUBY_VERSION=ruby-2.2.4
rvm_user_install_flag=1
_system_name=OSX
_=/usr/bin/env
¿Para qué es la salida ls -la ~/.bash_history? ¿Quizás es un problema de permisos? Aquí está mi:-rw------- 1 myusername staff 10852 18 gru 20:41 /Users/myusername/.bash_history
$ ls -la ~/.bash_history -rw-r--r-- 1 josh staff 3B Dec 31 08:38 /Users/josh/.bash_history
¿Reinició el shell (o la propia Terminal) después de tocar .bash_history?
Seguro que lo hice.
¿Podría eliminar temporalmente su ~/.bash_profile, iniciar un nuevo shell de inicio de sesión, verificar si tiene el mismo problema, informar esto en su OQ.

Respuestas (2)

Encontré el mismo problema después de eliminar voluntariamente el archivo .bash_history.

La solución simple es no solo tocar el archivo, sino también agregar algo de texto; uno o varios saltos de línea no son suficientes:

echo "exit" >> ~/.bash_history

Luego, sal completamente de la Terminal y vuelve a abrirla. Si ha guardado todo su trabajo en todas las sesiones de terminal, también puede simplemente

killall Terminal

Actualizar:

Traté de replicar su entorno en una VM 10.11 y, de hecho, es un problema con RVM: comentar todas las líneas relacionadas con rvm en .profile y .bash_profile vuelve a habilitar las actualizaciones del archivo .bash_history.

Sin embargo , el método de archivo .bash_logout (con el contenido shell_session_update ) parece funcionar de manera confiable aquí. Solo recuerde ingresar siempreexit antes de cerrar una ventana de Terminal o salir de Terminal. Sin entrar exitel historial no se actualizará.

Y ahora la pregunta obvia: ¿por qué? ¿El archivo necesita un carácter de nueva línea o simplemente cualquier carácter?
No parece funcionar para mí. Tengo algunas líneas en mi historial, pero no se agregan nuevas entradas.
ls y exit, sin nueva línea al final:ls\nexit
Todavía no funciona.
¿Cómo se puede hacer esto, deshabilitando el .bash_profile?
@JoshuaMuheim cambia el nombre a otra cosa como mv ~/.bash_profile ~/off.bash_profiley relanzamiento de Terminal (o killall Terminal)
aaah, puedo imaginar lo que sucedió: cuando abre la terminal y su shell de inicio de sesión es bash, bash abre el archivo .bash_history. Esto abre internamente un descriptor de archivo que apunta al archivo con un inodo. El archivo es utilizado por todos los shells bash en paralelo. Ahora, cuando elimina el archivo desde la línea de comando dentro de una sesión de bash y lo crea nuevo, el descriptor de archivo de bash aún está abierto. Pero ahora hay un nuevo archivo de historial con un inodo diferente. bash todavía quiere escribir en el descriptor de archivo anterior que apunta al inodo anterior y no puede. Además, bash abre el archivo en modo de adición.
Garex, esto suena interesante. ¿Cómo se puede solucionar esto?
Gracias por tu actualización, klanomath. Podría reproducir el problema: al comentar las cosas de RVM, el historial parece funcionar como se esperaba. Esto es bastante molesto... Pero crearé una nueva pregunta para eso.
@JoshuaMuheim ¿Ingresar exitantes de salir/cerrar la Terminal/Ventana de la Terminal no ayuda? En mi VM obtuve el mismo envresultado que el tuyo (excepto que mi versión de Ruby era un poco más antigua) y funcionó.
Volví a habilitar las cosas de RVM y, sorprendentemente, ¡el historial parece seguir funcionando! ¿Tal vez comentar RVM solucionó temporalmente las cosas?

Debe volver a crear el archivo con "nano", no con "toque". Ejecute este comando en la terminal, en su carpeta de inicio (/Users/Your-Username):

nano .bash_history

Escriba cualquier cosa en el archivo (de lo contrario, no se creará), salga y guarde.

Espero que esto ayude.

¿Cómo difiere esto de la respuesta ya dada?
Obtenga el resultado esperado de una forma más simplificada, es la única diferencia @patrix. Saludos.
Tampoco cambia nada. ¿Es tal vez porque tengo diferentes ventanas de terminal abiertas, cada una con algunas pestañas?
@JoshuaMuheim Eso probablemente lo cause, pero no puedo estar seguro, no he estudiado en detalle el funcionamiento del comportamiento ".bash_history" en osx "El Capitán". Lo que si puedo decir con certeza es que cada sesión de terminal en osx guarda los cambios en el archivo ".bash_history" hasta que cierra la ventana o ejecuta el comando de salida "salir", el archivo no está bloqueado mientras la sesión está activa.