É um comportamento esperado e já foi discutido várias vezes.
O script é executado em um subshell e não pode alterar o diretório de trabalho do shell pai. Seus efeitos são perdidos quando termina.
Para alterar o diretório permanentemente, você deve fornecer o script, como em
. ./script