¿Cómo cambiar la variable de entorno local?

¿Cómo cambiar la variable de entorno local?

yo he generadoes_US.utf8,et_EE.iso88591yru_RU.utf8archivos de localización. Ahora, si intento cambiar cualquiera de las variables locales a unaru_RU.utf8oes_US.utf8, entonces esto no tiene ningún efecto:

# locale -a
C
en_US.utf8
et_EE
et_EE.iso88591
POSIX
ru_RU.utf8
# LC_TIME=ru_RU.utf8
# locale | grep LC_TIME
LC_TIME="et_EE.iso88591"
# LC_TIME="ru_RU.utf8"
# locale | grep LC_TIME
LC_TIME="et_EE.iso88591"
# 

Sin embargo, si cambio elIDIOMA=variable, luego todas las demás variables exceptoIDIOMA=yLC_ALL=tomar el valor de laIDIOMA=variable. ¿Hay alguna manera de modificar cada variable local por separado? Además, ¿tengo razón en que las variables locales no son variables de shell normales, sino más bien parámetros paralugar¿utilidad?

Respuesta1

Puede configurar cualquier categoría local de forma independiente. LANGSe aplica sólo a las categorías que no están establecidas explícitamente.

LANGy LC_xxxson variables de entorno ordinarias. No son configuraciones para la localeutilidad: el localeprograma no participa en ningún procesamiento local, es solo una pequeña utilidad para informar las configuraciones locales actuales y disponibles.

Cuando escribes LC_TIME=ru_RU.utf8, esto no establece una variable de entorno, solo una variable de shell. Las variables del Shell son internas al Shell, no son vistas por otros programas. Las variables de entorno, por otro lado, las heredan los programas que inicia el shell. También debes exportar la variable al entorno:

$ LC_TIME=ru_RU.utf8
$ locale | grep LC_TIME
LC_TIME="et_EE.iso88591"
$ export LC_TIME
$ locale | grep LC_TIME
LC_TIME="ru_RU.utf8"

o directamente

$ export LC_TIME=ru_RU.utf8
$ locale | grep LC_TIME
LC_TIME="ru_RU.utf8"

Respuesta2

En las distribuciones basadas en Fedora/CentOS/RHEL, creo que puede cambiar la configuración regional a una de las que se muestran cuando ejecuta el locale -acomando en este archivo de sistema:

/etc/sysconfig/i18n

Por ejemplo en mi sistema Fedora 14:

$ more /etc/sysconfig/i18n 
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"

En GNOME puedes ejecutar la aplicación de ayuda:

system-config-language

Lo que muestra esta GUI:

             ss de idioma. interfaz gráfica de usuario

Creo que es ligeramente diferente para las distribuciones Debian/Ubuntu. Creo que es este archivo:

/etc/default/locale

Creo que son variables de entorno, pero no estoy del todo seguro de cómo las utilizan las aplicaciones, en todo caso.

Referencias

Respuesta3

Al menos en RedHat 6, tenga en cuenta que si se establece LC_ALL, la configuración de otras variables de entorno LC_* no tendrá ningún efecto, ya que LC_ALL tiene prioridad sobre todas las demás variables de entorno LC_*.

[root@nbu76 bin]# LC_TIME=en_US.UTF-8
[root@nbu76 bin]# export LC_TIME
[root@nbu76 bin]# locale
LANG=en_US.UTF-8
LC_CTYPE="en_IE"
LC_NUMERIC="en_IE"
LC_TIME="en_IE"
...
LC_ALL=en_IE
[root@nbu76 bin]# unset LC_ALL
[root@nbu76 bin]# locale
LANG=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME=en_US.UTF-8
...
LC_ALL=
[root@nbu76 bin]# export LC_TIME=en_IE
[root@nbu76 bin]# locale
LANG=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME=en_IE
....
LC_ALL=

Respuesta4

En los sistemas Debian, se puede ejecutar dpkg-reconfigure localespara configurar el idioma principal y hacer que otros estén disponibles; luego se puede ejecutar update-localepara configurar la LANGUAGEvariable de entorno /etc/default/localepara que tenga idiomas alternativos.

información relacionada