Você pode usar um subshell.
alias build='( cd $BUILD_ROOT; m; cp ...; cp...; deploy; deploy; deploy; )'
No exemplo acima, cd $BUILD_ROOT
altera o diretório de trabalho atual de
o subshell, mas não o shell interativo que chama o alias. Para um genérico
Nesse caso, você pode usar um subshell e um trap de saída.
alias build='( cleanup() { do; cleanup; }; trap cleanup EXIT; cd $BUILD_ROOT; m; cp ...; cp...; deploy; deploy; deploy; )'
Reconsiderar o uso de um script. O exemplo acima seria muito mais limpo em um script. Os scripts são interpretados em suas próprias instâncias do shell. O subshell a sintaxe não seria necessária em um script.
Você mencionou em um comentário que os scripts dependem do seu alias. Isso sugere que você está sourcing seus scripts em vez de executá-los, o que é geralmente uma má prática. Além disso, você mencionou que existem aliases que dependa do seu alias. Você pode usar scripts em aliases.