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_app
se o comandocd
falhar. - Permitir que os argumentos sejam passados para
my_app
: se você executardoit foo bar
,my_app
será chamado com os dois argumentosfoo
ebar
.