1 votos

Mensaje de error sobre `cal` en relación con la configuración regional

MacOS 12.6.5, ejecutando zsh:

Acabo de notar, que cuando escribo

 cal

Aparece el mensaje de error

cal: setlocale: No such file or directory

junto con el calendario que se mostrará. ¿Por qué ocurre esto?

Más información:

  • El mensaje de error implicaría que cal intenta ejecutar un programa externo llamado setlocale que obviamente no está en el PATH. Sin embargo, no espero que tal utilidad exista de todos modos; setlocale es una función C, no un comando externo.

  • He verificado (haciendo un type -a cal ), que efectivamente estoy corriendo /usr/bin/cal y no algún alias o función de shell que enmascare esta utilidad.

  • Mi LANG se establece en en_GB.utf8 y ejecutando una LANG=C cal ya no produce el mensaje de error. El error parece producirse cuando cal incapaz de tratar con mi configuración LANG, intenta establecer una configuración regional segura, y no lo consigue.

  • Creo que el problema está relacionado de alguna manera con un efecto similar por el que pregunté aquí aunque el mensaje de error es diferente.

¿Qué está pasando aquí?

2voto

Igor Zelaya Puntos 2266

Su problema parece ser que el nombre oficial de la configuración regional que desea es en_GB.UTF-8 no en_GB.utf8 . Pruebe

env LANG=en_GB.UTF-8 cal

Tenía curiosidad por saber por qué parecía que cal intenta ejecutar un programa externo llamado setlocale . Esto es lo que he encontrado.

cal en MacOS es en realidad ncal . Consulte la fuente aquí: https://opensource.apple.com/source/misc_cmds/misc_cmds-33/ncal/ncal.c.auto.html

El mensaje cal: setlocale: No such file or directory viene de esta llamada, justo al principio:

if (setlocale(LC_ALL, "") == NULL)
    warn("setlocale");

Así que, no, cal no intenta ejecutar nada. El mensaje de error es engañoso.

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