Problemas de escopo em diferentes linguagens de shell?

Parece que pdksh e mksh tem a implementação de escopo que eu esperava.

Por exemplo:

readonly x='global'

f() {
  local x
  readonly x='f'
  echo $x
}

g() {
  local x
  readonly x='g'
  echo $x
}

echo $x

f 
g

echo $x

pdksh e mksh produzem meu resultado esperado:

global
f
g
global

E o Bash falha:

line 5: local: x: readonly variable

Dash e Ksh93 também falharam na minha expectativa. (Eu mudeilocal paratypeset no teste de Ksh93.)

Isso parece confuso.

ATUALIZAÇÃO: editei a pergunta. A questão anterior não é declarada de maneira clara.

questionAnswers(1)

yourAnswerToTheQuestion