As variáveis do shell têm um escopo dinâmico . Se uma variável é declarada como local para uma função, esse escopo permanece até que a função retorne.
Existe uma exceção: em ATT ksh, se uma função é definida com a sintaxe function_name () { … }
padrão, suas variáveis locais obedecem ao escopo dinâmico. Mas se uma função é definida com a sintaxe ksh function function_name { … }
, então sua variável local obedece ao escopo léxico, de modo que elas não são visíveis em outras funções chamadas por isso. Mas bash, mksh e zsh só têm escopo dinâmico.