Con GNU xargs
en Linux:
xargs -r0a "/proc/$pid/environ" sh -c 'exec env -i -- "$@" locale' sh
Ejecutaría locale
en una copia del entorno, el proceso de pid $pid
pasó al comando que ejecutó por última vez.
Tenga en cuenta que locale
al ser externo, solo se preocupa por las variables de entorno, no por las variables de shell si no se han exportado.
El propio shell puede verse afectado por su configuración de localización incluso si las variables LC_*
, LANG
, LANGUAGE
no se exportan.
Algunas notas de precaución:
setlocale(LC_ALL, "")
para inicializar todas sus configuraciones de localización en función del entorno, pero no es necesario. setlocale()
con diferentes parámetros (improbable ). putenv()
/setenv()
).putenv()
/ setenv()
tradicionalmente no modifican el área expuesta por /proc/$pid/environ
pero IIRC está cambiando en versiones recientes de Linux y GNU libc. putenv()
/ setenv()
, el proceso puede terminar modificando su área de la pila expuesta por/proc/$pid/environ
(poco probable ). Otra opción sería adjuntar gdb al proceso y hacer:
call system("locale")
Sin embargo, eso es bastante intrusivo.
Ese usaría el entorno preparado por el propio proceso (asumiendo que usa environ
y/o putenv()
/ setenv()
que no todas las aplicaciones, especialmente los shells, por ejemplo, hacen ).
Con gdb, también podría consultar la configuración de localización directamente llamando a setlocale()
para cada categoría de configuración regional con un segundo argumento NULL.
Para conocer el valor de una determinada categoría:
$ printf '#include <locale.h>\nLC_COLLATE\n' | gcc -E -x c - | tail -n 1
3
Para imprimir el nombre de la configuración regional engdb
:
(gdb) p (char*)setlocale(3, 0)
$3 = 0xde8f40 "en_GB.UTF-8"
o:
(gdb) x/s setlocale(3, 0)
0xde8f40: "en_GB.UTF-8"
Это просто было неясно, потому что, если я еще не установил zfs -выпуска (, даже если он новее, чем я хочу ), я не мог видеть никаких пакетов. Однако, как только это было установлено для EL7 _3, я мог запустить это:
yum search zfs* --show-duplicates
Который затем показывает все пакеты, поэтому я запустил это:
yum install zfs-0.6.5.11-1.el7.centos spl-0.6.5.11-1.el7.centos
С этого момента установка прошла нормально.