Esta respuesta supone que la pregunta se refiere al comportamiento del historial de comandos función en zsh
.
Creo que hay que hacer dos puntualizaciones antes de proponer una respuesta:
- Información disponible en línea para
zsh
a menudo se refiere a un "configuración por defecto" . En lo que respecta a MacOS, el zsh
"configuración por defecto" puede diferir de la descrita en otras fuentes. El "Configuración por defecto de MacOS" es el zsh
"configuración por defecto" modificado por /etc/zshrc
. Es mejor revisar este archivo antes de hacer cambios, Y todos los cambios deben hacerse en el usuario local ~/.zshrc
archivo.
- Ayuda (a mí al menos) a entender que la cáscara puede mantener dos (2) historiales de comandos . Uno es un archivo histórico (por defecto:
~/.zsh_history
), el otro es un historial de sesiones que se almacena en la memoria para cada sesión. Los parámetros SAVEHIST
y HISTSIZE
determinar la profundidad del archivo histórico y el historial de sesiones respectivamente. Esto puede resultar confuso, y la siguiente figura, aunque no es técnicamente exacta, puede ayudar a entender el concepto.
Para cada sesión hay un único historial de sesiones . Sin embargo, sólo hay (por defecto) un historial de archivos para todas las sesiones. Bajo la configuración por defecto de MacOS (ref. /etc/zshrc
): HISTSIZE=2000
, SAVEHIST=1000
. Cuando se inicia una nueva sesión, el historial de sesiones está vacía. Sin embargo, suponiendo que el historial de archivos no está vacío, pulsando la tecla de flecha hacia arriba ( ) revelará los comandos emitidos desde otras sesiones. A medida que pasa el tiempo - a medida que se emiten comandos en esta nueva sesión - su historial de sesiones comenzará a rellenar los comandos introducidos en esta nueva sesión. Después de que se hayan emitido, por ejemplo, 20 comandos, la flecha hacia arriba ( ) revelará esos 20 comandos; la siguiente pulsación de la flecha hacia arriba revelará la última entrada en el historial de archivos .
En resumen: En un nueva sesión bajo la configuración por defecto de MacOS ( HISTSIZE=2000
, SAVEHIST=1000
) su historial de comandos se extrae del archivo histórico , es decir, de la historiales de sesiones de otras sesiones. A medida que se emiten más comandos en esta nueva sesión, estos comandos de la sesión "empujarán" los comandos del archivo histórico hacia abajo en la pila.
Según entiendo su pregunta, no desea que su historiales de sesiones a co-mezclar . Es decir, para cualquier sesión, no quiere ver ningún historial de comandos de otra sesión - de la archivo histórico . Después de leer lo anterior, si este es el comportamiento que quieres, aquí hay una manera de hacerlo:
Propuesta de respuesta: Fijar SAVEHIST=0
y HISTSIZE=2000
Abrir el archivo ~/.zshrc
en su editor, y añada las dos líneas siguientes que anulan los valores por defecto de MacOS:
SAVEHIST=0
HISTSIZE=2000
SAVEHIST=0
impedirá que cualquier sesión guarde su historial en el archivo histórico . Cada sesión tendrá un historial de comandos consistente únicamente en su único historial de sesiones . Las teclas de flecha arriba y abajo ( , ) lo hará nunca mostrar un comando de otra sesión porque en lo que respecta a la sesión actual, ese historial no existe. Los efectos secundarios potencialmente indeseables de esta opción son:
-
las nuevas sesiones no tienen historial de comandos
-
si una sesión se cierra o termina, historial de comandos se pierde, pero véase la nota 4 a continuación.
Si tiendes a mantener las sesiones abiertas durante largos periodos de tiempo (como hago yo), podrías establecer HISTSIZE
a un valor mayor para posponer la "poda" cuando el historial alcance el 120% de su asignación (2.400 comandos en este caso).
Si desea conservar el archivo histórico , zsh
proporciona una gran número de opciones para controlar cómo el archivo histórico y historial de sesiones se mantienen, y cómo interactúan entre sí para presentar su historial de comandos . Además, el fc
comandos son de cáscara empotrados que permiten manipular el historial de comandos ( ver también: 1 , 2 , 3 ). Además de las opciones propias de zsh
existen numerosas herramientas de terceros dedicadas a la historial de comandos incluso un herramienta que almacena el historial de comandos y otros datos relacionados en una base de datos relacional . Yo resumiría diciendo: "El historial de comandos del shell sufre de un vergüenza de la riqueza ."
Notas:
-
Tenga en cuenta que el nombre ~/.zsh_history
no es un estándar para zsh
- es simplemente el nombre de archivo que Apple ha elegido.
-
Apple define sus valores por defecto para zsh
en el archivo /etc/zshrc
. Es instructivo revisarlos, pero probablemente sea mejor hacer cambios en los valores predeterminados dentro de su archivo de configuración local en ~/.zshrc
.
-
HISTFILE , HISTSIZE y SAVEHIST están cubiertos en el zshparam
manuales
HISTFILE (de man 1 zshparam
) El archivo en el que se guarda el historial cuando se sale del shell interactivo. Si no se establece, el historial no se guarda.
HISTSIZE (de man zshparam
) El número máximo de eventos almacenados en la lista del historial interno.
SAVEHIST (de man zshparam
) El número máximo de eventos del historial a guardar en el archivo del historial.
-
El fc
comandos son de cáscara empotrados que permiten manipular el historial de comandos ( ver también: 1 , 2 , 3 ).
0 votos
¿Estás usando Zsh o Bash? Escriba
echo $SHELL
oecho $0
0 votos
Si estás usando Zsh querrás Desactivar las opciones del historial detalladas en esta respuesta
0 votos
@mzoz : A ficha no recuerda nada. El shell lo hace. Puedes configurar zsh para tener un historial común o un historial separado para cada proceso interactivo de zsh.
0 votos
Echa un vistazo a la página de manual, donde las opciones
sharehistory
,incappendhistory
,histnostore
y las variablesHISTFILE
ySAVEHIST
se discuten.