5 votos

¿Por qué no `historia` de trabajo?

Estoy trabajando en OS X 10.9.1 (Mavericks), uso de Terminal, que informa de que es GNU bash, versión 3.2.51(1) liberación (x86_64-apple-darwin13)

Me di cuenta de algo extraño cuestiones en las que la historia no estaba funcionando correctamente: history -a y history -a filename.txt no hacer nada. history muestra la historia que yo esperaría. Esto rompe mi .bashrc sincronización de la historia a través de los terminales.

Empecé a investigar por el cambio manual de bash HIST variables. Aquí es cómo soy capaz de reproducir mi problema bajo cierta condiciones controladas:

  1. He desactivado mi .bashrc
  2. He abierto una nueva ventana de terminal y borra la historia

    history -c
    
  3. Me confirmó que mi PROMPT_COMMAND es volver a la normalidad/predeterminado:

    echo $PROMPT_COMMAND
    

    Esto devuelve: update_terminal_cwd;

  4. Yo manualmente la correspondiente HIST variables:

    export HISTFILE="/Users/rsage/temp_history.txt"
    export HISTSIZE=20000
    export HISTFILESIZE=20000
    
  5. Confirmo mi historial de las pruebas de que los archivos se eliminan:

    ls *history*.txt # To make sure I know what I'm about to delete
    rm *history*.txt
    
  6. Intento guardar el historial de uso de history -a sin suerte

    history -a
    history -a history_a.txt
    ls -ltr ; date
    

    Este último no muestra el historial de archivos:

    ...
    drwx------+ 40 rsage  staff   1360 Dec 20 14:16 Desktop
    drwxr-xr-x   4 rsage  staff    136 Dec 20 18:48 webApps
    drwxr-xr-x   8 rsage  staff    272 Dec 22 09:11 code
    drwxr-xr-x  17 rsage  staff    578 Dec 22 09:26 stuff
    

    Dom 22 Dic 10:17:50 PST 2013

  7. ...pero me topé con la history -w comando (sé que sobrescribe el archivo, que está muy bien con mi nominal bashrc) y esto parece funcionar bien:

    history -w
    history -w history_w.txt
    ls -ltr ; date
    

    que produce los resultados esperados:

    ...
    drwx------+ 40 rsage  staff   1360 Dec 20 14:16 Desktop
    drwxr-xr-x   4 rsage  staff    136 Dec 20 18:48 webApps
    drwxr-xr-x   8 rsage  staff    272 Dec 22 09:11 code
    drwxr-xr-x  17 rsage  staff    578 Dec 22 09:26 stuff
    -rw-------   1 rsage  staff    461 Dec 22 10:19 temp_history.txt
    -rw-------   1 rsage  staff    494 Dec 22 10:19 history_w.txt
    

Una última nota. Se me ocurrió que mi tamaños puede ser demasiado grande, así que sólo traté de 200 y no hay cambio de comportamiento (los años treinta son la historia de los números de salida):

34  export HISTFILESIZE=200
35  export HISTSIZE=200
36  history -a
37  history -a history_a.txt
38  ls -ltr ; date

El ls salidas de no mostrar los archivos nuevos.

1voto

RalphK Puntos 11

Me di cuenta de que el mismo comportamiento extraño, comprueba los permisos, y, por supuesto, tanto el "Mundo" y "Sistema" había explícito el conjunto de permisos para leer Y escribir de mi .bash_history archivo, pero yo (el dueño) no tenía los permisos para que el archivo de todos!

Acabo de obligado "Mundo" a "Sin Acceso" y dio a mí mismo y el sistema de r/w de acceso y voila, todo está funcionando como debería.

0voto

5th Wheel Puntos 13

Tengo dos respuestas: ¿por qué el procedimiento no funciona y por qué mi problema original que pasó.

la historia -un problema

Además el procedimiento para la repetición de esta arriba, empecé sistemáticamente la construcción de mi .bashrc desde el suelo hacia arriba. Muy rápidamente me determinado que es el history -c que los naufragios de todo.

Si usted realiza el procedimiento con o sin el history -c, encontrará que history -a funciona si history -c no ha sido llamado en la instancia de bash y history -a falla si history -c ha sido llamado.

la solución al problema original

La respuesta no fue muy satisfactorio - sobre todo desde que la cuestión es que mi .bashrc fórmula se basa en history -c como parte de la propagación de la historia (el estándar export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND" que se muestra en Preservar bash historia en múltiples ventanas de la terminal , entre otros lugares).

Sin solucionar este problema anterior, parece que la historia de la propagación de la cuestión de los resultados del uso de un (relativo) de la ruta de acceso en HISTFILE. HISTFILE parece querer un nombre de archivo sin la ruta de acceso. Por lo tanto, el cambio de HISTFILE="~/.bash_history_shared" a HISTFILE=".bash_history_shared" corrige el problema original.

Que plantea la pregunta obvia si eso se soluciona el primer problema que se muestra arriba. Parece que no. Dicho esto, el hecho de que el export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND" obras parece sugerir que tal vez el que me parece raro comportamiento de history -a no es inusual...?

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X