¿Por qué bash a veces olvida el comando escrito anteriormente?

4

Encontré un caso extraño en un sistema Ubuntu Lucid:

La línea de comandos de bash funciona bien la mayor parte del tiempo, pero por alguna razón a veces Arriba no funciona para recordar el comando anterior. Recuerda los anteriores pero es como el último que se olvidó. Así que hay que escribirlo o copiarlo de nuevo, realmente molesto ...

¿Alguna idea de qué podría estar causando esto?

La versión de bash es la que viene con la distribución, 4.1.5 (1) -release (paquete: 4.1-2ubuntu3)

riverflow
fuente

Respuestas:

9

Los comandos ingresados ​​con un espacio inicial generalmente no se almacenan en el historial de bash. Esta es una característica: si quieres bash no para poner un comando en la historia, como un comando peligroso como rm -rf ..., coloca un espacio delante de ella. Además, los comandos duplicados pueden ser ignorados.

Este comportamiento es configurable con el HISTCONTROL variable. Desde man bash:

HISTCONTROL

Una lista de valores separados por dos puntos que controla cómo se guardan los comandos en la lista de historial. Si la lista de valores   incluye ignorar, las líneas que comienzan con un carácter de espacio no se guardan en la lista de historial. Un valor de ignorado provoca líneas.   haciendo coincidir la entrada del historial anterior para no ser guardado. Un valor de ignoreboth es una abreviatura de ignorespace y ignoredups. Un valor de   Los borrados hacen que todas las líneas anteriores que coincidan con la línea actual se eliminen de la lista del historial antes de que se guarde esa línea. Algún valor   no                 en la lista anterior se ignora. Si HISTCONTROL no está configurado o no incluye un valor válido, todas las líneas leídas por el analizador de shell   son                 guardado en la lista de historial, sujeto al valor de HISTIGNORE. La segunda y subsiguientes líneas de un compuesto multilínea.   mando                 no se prueban, y se agregan al historial independientemente del valor de HISTCONTROL.

Para ver cómo está configurado su shell, ejecute:

echo $HISTCONTROL

Para cambiar a una nueva configuración, edite su ~/.bashrc expediente.

John1024
fuente
Tocar el asunto exacto, .bashrc tenía HISTCONTROL=ignoredups:ignorespace.
riverflow
¡No sabía esto! Gracias por el consejo útil!
KevinM