Não tenho certeza se isso conta. Se o problema é apenas que você não quer usar um cd
porque você não quer ter cd
de volta, você pode usar um subshell usando a notação ( ... )
. Você pode alterar o diretório dentro dos parênteses, mas ele é descartado quando você sair. Tente isso e você verá instantaneamente o que ele faz:
( cd ..; pwd); pwd
Se você realmente insistir em não querer ver o comando cd
em qualquer parte do loop, pode usar um procedimento como um wrapper para ocultá-lo.