Después de descubrir lo que esto shopt -s histappend
significa , parece una configuración muy sensata, y me sorprende que no sea por defecto. ¿Por qué alguien querría borrar su historial en cada salida de shell?
bash
command-history
tshepang
fuente
fuente
bash
"puro" o una distribución suministrada.bashrc
. para el primero, @Gilles probablemente sea correcto. en este último sentido,-s histappend
está predeterminado en, por ejemplo, Debian, desde 2008: bugs.debian.org/cgi-bin/bugreport.cgi?bug=452459Respuestas:
Bueno, cuando
histappend
no está configurado, esto no significa que el historial se borre en cada salida de shell. Sinhistappend
bash lee el archivo histórico al inicio en la memoria, durante la operación, se agregan nuevas entradas, y al salir del shell, las últimas líneas HISTSIZE se escriben en el archivo de historial sin agregar, es decir, reemplazar el contenido anterior.Por ejemplo, si el archivo histórico contiene 400 entradas, durante el tiempo de ejecución de bash se agregan 10 nuevas entradas: histsize se establece en 500, entonces el nuevo archivo histórico contiene 410 entradas.
Este comportamiento solo es problemático si usa más instancias de bash en paralelo. En ese caso, el archivo de historial solo contiene el contenido del último shell existente.
Independientemente de esto: hay algunas personas que quieren borrar su historial en la salida de shell por razones de privacidad.
fuente
histappend
siroot
la historia llega a un disco? Nuevamente, solo afecta lo que está escrito, no si .histappend
así comoHISTCONTROL=ignoredups:erasedups:ignorespace
parece ser un buen defecto para la mayoría de las personas.histappend
efectivo sin sentido si tengoHISTFILESIZE=
yHISTSIZE=
para una historia infinita?Por compatibilidad histórica, supongo. La
histappend
opción no existía hasta bash 2.0.fuente
histappend
.