7 votos

MacOS .zsh_sessions, .zsh_history y `setopt APPEND_HISTORY`

En macOS, hay un directorio de sesiones que combina comandos de múltiples sesiones zsh en un solo archivo de historial.

¿Es necesario usar opciones de shell en el archivo .zshrc para manipular cómo zsh maneja el historial, de manera que los comandos se agreguen a .zsh_history, o estas opciones son redundantes y se ignoran?

Veo que muchas personas recomiendan, al hacer la transición de bash a zsh, agregar las siguientes opciones para que el historial incluya comandos de otras sesiones y añada otras funcionalidades (que parecen estar integradas):

APPEND_HISTORY
HISTFILE=~/.zsh_history
HISTSIZE=100000000
SAVEHIST=100000000
setopt INC_APPEND_HISTORY
[...]

Sin embargo, parece que estas opciones están integradas y no necesitan ser especificadas.

Pregunta extra: ¿Se pueden listar varias opciones de shell después de un solo setopt, en lugar de tener cada opción en una declaración setopt separada?

13voto

Marlon Richert Puntos 251

En macOS, /etc/zshrc contiene (entre otras cosas) las siguientes líneas:

# Guardar historial de comandos
HISTFILE=${ZDOTDIR:-$HOME}/.zsh_history
HISTSIZE=2000
SAVEHIST=1000

Esta es la razón por la que no necesitas establecer esos valores en macOS (y en muchos otros sistemas operativos): ya está hecho por ti. Sin embargo, por supuesto que eres libre de sobreescribir esos valores en tu archivo .zshrc. No obstante, se recomienda que establezcas $HISTSIZE (cuánto historial se mantiene en memoria) al menos un 20% más grande que $SAVEHIST (cuánta memoria se guarda en el archivo). Lee https://zsh.sourceforge.io/Doc/Release/Options.html#History para más información.

Si (y solo si) estás usando la Terminal.app de Apple, entonces /etc/zshrc a su vez llama a /etc/zshrc_Apple_Terminal. Ahí encontramos (entre otras cosas):

# Soporte de Resumen: Guardar/Restaurar Estado de la Shell

seguido de un montón de código portado del /etc/bashrc_Apple_Terminal de macOS. En zsh, este código es en gran parte innecesario, ya que la Z Shell puede hacer lo mismo solo con la opción de shell SHARE_HISTORY.

Para usar la implementación de Zsh en lugar de la de Apple:

  • Agrega a tu archivo .zshenv:

    SHELL_SESSIONS_DISABLE=1
  • Agrega a tu archivo .zshrc:

    setopt SHARE_HISTORY
  • En tus archivos de configuración de Zsh, asegúrate de no establecer ninguna opción incompatible con SHARE_HISTORY. Nuevamente, lee https://zsh.sourceforge.io/Doc/Release/Options.html#History para más información.

  • Elimina el directorio .zsh_sessions creado por el código de Apple.

Pregunta extra: ¿podemos listar opciones después de setopt en lugar de tener cada una en una nueva línea?

Sí, puedes pasar tantas opciones como desees a setopt. Solo pruébalo en la línea de comandos.

0 votos

¿Qué necesito hacer para deshabilitar solo los mensajes "Sesión restaurada" y "Guardando sesión", etc., que se imprimen en la terminal, sin deshabilitar realmente nada de lo que está sucediendo detrás de escena?

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