¿Dónde se configura la variable $ LANG en Mac OS X?

23

He usado wget por primera vez después de instalar Lion OS X y he notado que el wget se localizó en mi idioma nativo. Ejecutar el comando set en el terminal mostró que mi variable LANG representa mi idioma local. ¿Dónde puedo cambiar esto o hacer que wget ignore esta configuración?

update

Esto es lo que locale me da:

LANG="lt_LT.UTF-8"
LC_COLLATE="lt_LT.UTF-8"
LC_CTYPE="lt_LT.UTF-8"
LC_MESSAGES="lt_LT.UTF-8"
LC_MONETARY="lt_LT.UTF-8"
LC_NUMERIC="lt_LT.UTF-8"
LC_TIME="lt_LT.UTF-8"
LC_ALL=

Por lo tanto, todos los resultados de los no parámetros (como las solicitudes y los mensajes de depuración) están en lituano. Ese es mi problema. Me gustaría volver a inglés.

Estoy usando zsh como mi shell de inicio de sesión.

    
pregunta Eimantas 09.08.2011 - 14:01

6 respuestas

24

De forma predeterminada, Terminal configura las variables de entorno de configuración regional para que coincidan con el idioma actualmente seleccionado y los formatos de hora / fecha / número que utiliza Terminal, que se seleccionan a través de

  

Preferencias del sistema > Idioma y texto

(Ese es el nombre en Lion. En los sistemas anteriores, el nombre exacto del panel de preferencias puede variar.)

Una solución temporal es arrastrar el inglés a la parte superior de la lista de idiomas, luego abrir Terminal y luego mover el lituano a la parte superior. Entonces solo Terminal estará en inglés. Sin embargo, se restablecerá a lituano si sale y reinicia el terminal.

Un enfoque persistente es decirle a la Terminal que no establezca las variables de entorno de la localidad, desactivando

  

Terminal > Preferencias > Configuraciones > [perfil] > Avanzado > Establecer las variables de entorno de configuración regional en el inicio

Luego, la configuración regional se establecerá de manera predeterminada en "C" sin idioma especificado, y la mayoría de los programas se establecerán de manera predeterminada en inglés.

Tenga en cuenta que desactivar esto significa que algunos programas no sabrán qué codificación de caracteres está utilizando Terminal y asumirá que es solo ASCII o ISO-Latin-1. Entonces, si Terminal está usando UTF-8 (el valor predeterminado), esos programas pueden o no comportarse como se desea.

Si se trata principalmente de wget , te recomiendo que hagas una copia del perfil de configuración predeterminado, desactives la configuración regional en tu perfil personalizado y solo uses ese perfil cuando utilices wget , para que puedas continúe usando UTF-8 con soporte completo cuando use otros programas, usando la configuración predeterminada.

Como han mencionado otros, también puede anular la configuración regional inicial proporcionada por Terminal en un script de inicio de shell. Para zsh, ponlo en ~ / .zshrc. Para bash, use ~ / .bashrc (y si aún no tiene uno, cree un ~ / .bash_profile que ejecute ~ / .bashrc).

Consulte x-man-page: // 1 / locale para obtener más información sobre cada uno de los valores de entorno de la configuración regional.

Sin embargo, si solo fuera unset LANG o lo configurara como "C", eso normalmente se aplicaría a todos de sus shells y programas, mientras que la mayoría de las veces probablemente quiera usar UTF-8 y tienen la Terminal configurada para que las variables locales coincidan, para obtener el mayor grado de cooperación, fidelidad y funcionalidad.

Por lo tanto, si vas a seguir esa ruta, te sugiero que escribas un código para editar, en lugar de reemplazar, los valores iniciales, para que puedas conservar la información de codificación ("UTF-8") y simplemente forzar el idioma. a inglés, en lugar de establecer las variables en "C".

Por ejemplo, esto funciona en zsh y bash:

# Replace Lithuanian with English
export LANG=${LANG/lt_LT/en_US}

Cuando LANG="lt_LT.UTF-8" , esto lo cambiará a LANG="en_US.UTF-8" . No tengo wget disponible para probar esto, pero esto debería ser suficiente.

Hacerlo de esta manera significa que si cambias la preferencia de codificación de caracteres en la Terminal, no la anularás en tu script de inicio de shell.

    
respondido por el Chris Page 26.08.2011 - 06:27
7

Se establece aquí ...

Si quieres más o menos opciones en el menú desplegable, dirígete a la pestaña Codificaciones para ver aún más de la recompensa.

    
respondido por el bmike 09.08.2011 - 16:05
1

Basado más en la experiencia de Linux, si no desea cambiar su localización completamente con LC_LANG, pero le gustaría tener mensajes del sistema en inglés, deberías haberlo puesto

LC_COLLATE=C    (to have standard sorting in ls, etc)
LC_CTYPE=en_US.UTF-8
    
respondido por el dmpogo 12.02.2012 - 21:20
1

Resolví este problema configurando el idioma en mi archivo .profile que se carga cada vez que inicio una terminal.

export LANG="en_US.UTF-8"
export LC_ALL="POSIX"
    
respondido por el user42973 15.02.2013 - 15:47
0

Usando un servidor Debian en francés y un cliente bash macsox, "solo" tuve que agregar esto a mi .bash_profile en el directorio de usuarios de macosx:

  

export LANG = fr_FR.UTF-8

Resuelto.

    
respondido por el XiangXing 26.09.2014 - 09:28
0

Las otras respuestas son correctas, es decir, sobre la configuración de Terminal para establecer las variables de entorno de configuración regional en el inicio y usar el /etc/profile del shell. Sin embargo, hay otra forma que vale la pena entender, especialmente si el "problema" se experimenta debido a un inicio de sesión ssh remoto.

OpenSSH (como se usa en Linux, BSD y macOS) puede enviar variables de entorno desde el entorno del cliente al shell que inicia el servidor. Solo hace esto si el cliente está configurado para enviarlos y el servidor está configurado para aceptarlos. El cliente ( ~/.ssh/config ) debería tener:

SendEnv LANG LC_*

y el servidor ( /etc/ssh/sshd_config ) necesitaría:

AcceptEnv LANG LC_*

Si ambos están en su lugar, el local del cliente se propaga al shell de inicio de sesión en el servidor ssh:

$ ssh [email protected] locale
LANG="en_GB.UTF-8"
LC_COLLATE="en_GB.UTF-8"
LC_CTYPE="en_GB.UTF-8"
LC_MESSAGES="en_GB.UTF-8"
LC_MONETARY="en_GB.UTF-8"
LC_NUMERIC="en_GB.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_ALL=

La configuración requerida del servidor no está allí de forma predeterminada en Snow Leopard ; está allí en Sierra . Recuerde reiniciar el servidor SSH después de modificar /etc/sshd_config !!!

    
respondido por el starfry 16.10.2017 - 12:04

Lea otras preguntas en las etiquetas