Lea el manual fino, sección "errores".
Es posible que las variables de matriz (todavía) no se exporten.
Sin embargo, no sé si muchos consideran que esto es un error real. Otros shells que admiten matrices de estilo ksh tampoco permiten exportarlos.
Puede pasar definiciones de matriz con bastante facilidad, a través de parámetros o variables o el entorno. Sin embargo, no suele ser muy útil.
function f {
unset -v "$2"
typeset "$2"
eval "${!1}"
typeset -p "$2"
}
typeset -a a=(a b c)
myArr=$(typeset -p a) f myArr a
El malentendido es pensar que las variables de entorno solo son utilizadas por shells, no lo son. No se pueden exportar atributos al bloque de entorno, incluidos los de solo lectura, enteros y matrices. Las variables de entorno pueden leerse en cualquier lenguaje, C, C++, Perl, Java, Python, PHP, etc. También existen en Windows.
Entonces, ¿cómo podría otro idioma admitir atributos específicos de Bash? Todas las variables de entorno se convierten en cadenas, excepto en Bash, donde los valores de matriz no se exportan en absoluto.
Korn shell exportará solo el primer elemento. ksh93 también hace algo de exec
explotación para preservar los atributos variables exportados a los hijos de shell Korn.
Por cierto, se considera una mala práctica usar MAYÚSCULAS para los nombres de las variables, ya que podrían colisionar con las que usa el shell. Además, en Bash 3, el nombre STRING tiene problemas cuando se exporta (corregido en Bash 4).