Tentando acessar a variável de ambiente (matriz) declarada em ~ / .profile a partir do shell script

1

Atualmente, estou lutando com esse problema.

Eu já li algumas postagens mais antigas aqui no SE, e cheguei à conclusão de que a única maneira sensata de colocar uma variável (até mesmo uma matriz) é ~/.profile .
Então, OK, array mostra, coisas simples como echo ${myarray[12]} funcionam bem, no entanto, apenas no console. myarray é uma matriz de strings grande com várias dúzias de valores constante , que gostaria de criar uma vez, em vez de criar do zero toda vez que eu executar o script.

No entanto, uma verificação simples como echo "elems = ${#myarray[@]}" irá sempre retornar 0 , i. e. a matriz não é conhecida e está vazia.

Mas por que isso acontece? Eu realmente esperava que as variáveis declaradas em ~/.profile estarão disponíveis também nos scripts de shell que inicio neste ambiente. (Mesmo do mesmo tty não mostrará os valores de dentro do meu script.)

    
por syntaxerror 16.09.2014 / 00:37

1 resposta

2

As matrizes não são variáveis de ambiente e, portanto, não são (e não podem ser ) herdado por processos filhos (como scripts) de seus pais. Você deve "criar [sua matriz] a partir do zero toda vez que executar seu script". Eu não entendo porque você vê isso como uma dificuldade. Se os valores são constantes, como você diz, tudo o que precisa acontecer é para esses valores serem lidos na memória do script. Se sua preocupação é que o código para inicializar o array sobrecarregue seu script, coloque-o em um arquivo de script separado e chame-o com “ . ” ou “ source ”.

Eu não sei de onde você tirou a ideia de que "a única maneira sensata de colocar [sic] uma variável (mesmo uma matriz) é ~/.profile . ”

    
por 16.09.2014 / 01:08