Recientemente (posiblemente con la actualización Sonoma, pero posiblemente incluso más reciente que 14.0), Apple Terminal ha estado dando el siguiente error al iniciar (cuando macOS está configurado para restaurar ventanas, es decir, cuando Configuración del Sistema > Cerrar ventanas al salir… está desmarcado):
fecha: formato de hora no válido
uso: fecha [-jnRu] [-I[fecha|horas|minutos|segundos]] [-f formato_entrada]
[-r nombre_archivo|segundos] [-v[+|-]val[d|m|w|d|H|M|S]]
[[[[mm]dd]HH]MM[[cc]yy][.SS] | nueva_fecha] [+formato_salida]
-bash: Saving: comando no encontrado
o, en el caso de zsh
,
/Users/jaffe/.zsh_sessions/.sesión:2: comando no encontrado: Saving
Desde que publiqué originalmente esta pregunta (ver actualizaciones a continuación), ha quedado claro que el error parece ocurrir en varias versiones de macOS, en Intel y Apple Silicon. No parece deberse a software instalado o archivos de configuración.
He rastreado este error a un error proveniente de /etc/bashrc_Apple_Terminal
(o /etc/zshrc_pple_Terminal
) que se ocupa principalmente de guardar y restaurar sesiones para las diversas pestañas y ventanas del terminal. (La mayoría de lo siguiente se referirá específicamente a los síntomas con bash
pero es similar para zsh
.)
Viene de las líneas
if [ -r "$SHELL_SESSION_FILE" ]; then
. "$SHELL_SESSION_FILE"
rm "$SHELL_SESSION_FILE"
fi
En el inicio del shell, este fragmento se ejecuta, y luego elimina, "$SHELL_SESSION_FILE"
, que se escribe al salir del shell por las siguientes líneas:
if [ -n "$SHELL_SESSION_FILE" ]; then
echo -ne '\nGuardando sesión...' >&2
(umask 077; echo 'echo Sesión restaurada: "$(/bin/date -r '$(/bin/date +%s)')"' >| "$SHELL_SESSION_FILE")
declare -F shell_session_save_user_state >/dev/null && shell_session_save_user_state
shell_session_history_allowed && shell_session_save_history
echo 'completado.' >&2
fi
El error ocurre porque $SHELL_SESSION_FILE
contiene incorrectamente el siguiente texto:
Guardando sesión...echo Sesión restaurada: "$(/bin/date -r 1698759014 Guardando sesión...)"
en lugar de echo Sesión restaurada: "$(/bin/date -r 1698759014)
Por alguna razón, el texto Guardando sesión...
aparece en el archivo (¡dos veces!) -- se envía a "$SHELL_SESSION_FILE"
en lugar de stderr (a través de >&2
).
Creo que no hice ningún cambio para causar esto, pero tal vez me equivoque. El directorio ~/bash_sessions/
parece tener archivos recientes con este error, y archivos ligeramente más antiguos (¡tan recientes como ayer!) que no lo tienen. Actualizo regularmente varios paquetes con homebrew, y recientemente instalé Python 3.12 de python.org, pero no veo cómo podrían afectar al inicio del shell.
Actualización: De hecho, veo esto incluso con un usuario nuevo, ¡e incluso si uso zsh en lugar de bash! (Apple Terminal tiene un código muy similar para la gestión del historial de sesiones bajo zsh). Así que parece que algún otro cambio reciente en mi sistema está causando esto. Pero sospecho que no es simplemente un problema de Sonoma, ya que no parece ser generalizado. ¡Ay!
Actualización 1a: Tenga en cuenta que el código se ejecuta via trap shell_session_update EXIT
. El error parece ocurrir solo cuando salgo del shell al cerrar Terminal.app, pero no cuando uso el comando exit
. (Incluso he intentado enviar explícitamente varios señales al shell a través de kill -n
, pero no puedo inducir el error de esa manera).
Actualización 2: ¡Al menos otra persona está viendo esto! ¿Quizás esto indica un problema con VS Code?
Actualización 3: Después de algo de ida y vuelta en los comentarios a continuación, está claro que el error abarca múltiples versiones de macOS en ambas arquitecturas, y parece que hemos eliminado a VS Code y posiblemente Python (parece que estamos usando diferentes versiones e instaladores) como la causa; he eliminado /opt/homebrew
y reiniciado y todavía veo el problema. ¿Es posible que alguna de estas cosas de alguna manera "contamine" el entorno -- por ejemplo, /etc/
-- de alguna manera que permanezca en su lugar?
Actualización 4: Inspirado por una interacción en TidBits, intenté usar la excelente máquina virtual ligera y aislada de Howard Oakley, ViableS. No instalé nada, nunca, nada, y no agregué archivos a ~/
o en ningún otro lugar. Pero después de iniciar y reiniciar Terminal.app con algunas pestañas, y asegurarme de que "cerrar ventanas al salir" esté desmarcado, inmediatamente recibí el mensaje
/Users/jaffe/.zsh_sessions/.sesión:2: comando no encontrado: Saving
Esto parece apuntar, casi de manera concluyente, a un error de macOS. Pero aún no entiendo cómo hay personas reportando que no lo ven.
¿Alguien más está viendo esto? ¿Hay alguien que explícitamente no lo esté viendo? ¿Alguna idea de qué está sucediendo (o incluso sugerencias de depuración)?
He planteado una versión más específica de esta pregunta en Unix & Linux SA.