Existe uma variedade de opções; Eu costumo usar subshells
( cd some/dir && do_work )
( cd some/other/dir && do_more_work )
Como o pwd
só mudará dentro da subshell, não no processo pai. Outra opção é pushd
/ popd
:
pushd some/dir
do_work
popd
pushd some/other/dir
do_even_more_work
E ainda outro é usar caminhos totalmente qualificados, que têm o bônus de não importar onde o diretório de trabalho anterior estava, embora faça mais amarrar o código a uma hierarquia de sistema de arquivos específica:
WORKDIR=/blah/de/blah
cd $WORKDIR/some/dir && do_work
cd $WORKDIR/some/other/dir && you_get_the_idea
A verificação de erros também é útil, pois cd
pode falhar e, em seguida, o que acontece? Sempre verifique se o cd
aconteceu (o && ...
teste) ou use set -e
para resistir a qualquer falha.