Um alias é quase uma substituição textual. Portanto, após a definição do alias, digitar doit equivale a digitar cd ~/some/dir; ./my_app; cd - . Esta é uma lista de comandos sintaticamente correta, e seu valor de retorno é o valor de retorno do último comando na sequência, aqui cd - .
Outras respostas mostram uma maneira geral de salvar o status de um comando intermediário e retorná-lo. No entanto, neste caso específico, há uma maneira melhor de expressar essa seqüência de ações: em vez de mudar para outro diretório e, em seguida, voltar, execute a ação que requer um diretório atual diferente dentro de um subshell, para que o diretório atual do shell não muda nada.
doit () {
(cd ~/some/dir && ./my_app "$@")
}
Eu fiz duas melhorias adicionais:
- Use
&&em vez de;entre os comandos, para não tentar executarmy_appse o comandocdfalhar. - Permitir que os argumentos sejam passados para
my_app: se você executardoit foo bar,my_appserá chamado com os dois argumentosfooebar.