
Me gusta desactivar todas las diferencias locales específicas en los scripts de shell. ¿Cuál es la forma preferida de hacerlo?
LANG=C
oLC_ALL=C
Respuesta1
LANG
establece la configuración regional predeterminada,es decirla configuración regional utilizada cuando no se proporciona ninguna configuración más específica ( LC_COLLATE
, LC_NUMERIC
, etc.); LC_TIME
no anula ninguna configuración, proporciona el valor base. LC_ALL
por otro lado, anula todas las configuraciones regionales.
Por lo tanto, para anular la configuración de los scripts, debes configurar LC_ALL
.
Puede comprobar los efectos de su configuración ejecutando locale
. Muestra elcalculadovalores, entre comillas, para todas las categorías locales que no están establecidas explícitamente; en su ejemplo, LANG
no se anula LC_NUMERIC
, proporciona el valor predeterminado. Si LC_ALL
y LC_NUMERIC
no están configurados en el entorno, la configuración regional se toma de LANG
y locale
muestra ese valor para LC_NUMERIC
, como lo indican las comillas.
Verla locales
página de manualylas definiciones POSIX de variables de entornopara detalles. Ver también¿Cómo funciona el programa "local"?
Respuesta2
LANG
no anula:
$ exportar LC_NUMERIC="de_DE.UTF-8" $ exportar LANG=C $ imprimirf "%.2f\n" 3.14 -bash: printf: 3.14: número no válido 3,00
Pero LC_ALL
lo hace:
$ exportar LC_NUMERIC="de_DE.UTF-8" $ exportar LC_ALL=C $ imprimirf "%.2f\n" 3.14 3.14