Respondendo a essa pergunta , descobri uma diferença muito engraçada (e sutil) entre comportamento bash
e zsh
:
Em bash
:
romano@RRyS:~$ pwd
/home/romano
romano@RRyS:~$ alias x="cd /bin && ./echo A >/dev/null &"
romano@RRyS:~$ x
[1] 16611
romano@RRyS:~$ pwd
/home/romano
Como você pode ver, a execução do alias x
é realizada em um subshell e, portanto, o diretório atual não muda.
Não está em zsh
:
[romano:~] % pwd
/home/romano
[romano:~] % alias x="cd /bin && ./echo A >/dev/null &"
[romano:~] % x
[1] 16744
[1] + 16744 done ./echo A >/dev/null
1& [romano:/bin] % pwd
/bin
[romano:/bin] %
aqui o diretório é alterado.
Parece que o &
in bash
tem uma prioridade diferente do que em zsh
--- quero dizer, o comando parece ser lido como
(cd /tmp && echo A) &
dentro bash
e como
cd /tmp && (echo A &)
no zsh
. Isso está correto ou a causa do comportamento diferente é outra?