Isso porque seu shell inicia outro shell para executar seu script. O segundo shell altera seu diretório de trabalho e sai para o primeiro shell, que nunca mudou seu diretório.
Para fazer com que seu shell atual execute o script, chame desta maneira:
. scriptname
(observe o ponto). Claro, você terá que tirar esse exit 0
.
Você também pode escrever uma função de shell. Veja ksh(1)
.