Não, porque quando você invoca um script como ./script.sh foo
, ele inicia uma subshell para executar o script para você. Quando essa sub-shell sai, você é colocado de volta no diretório em que estava quando iniciou o script. Você pode falsificar esse comportamento usando um script que faz algo assim:
#!/bin/bash
cd $1
bash
Isso colocará você em uma sub-shell depois de alterar os diretórios, que você terá que exit
para voltar ao seu shell original.
Se você fizer a última linha:
exec bash
Você não terá que sair do novo shell, porque o novo shell substituirá o shell antigo. Fazer isso, no entanto, continua sendo um hack feio (IMHO).