Answering this question I discovered a very funny (and subtle) difference between behavior in
romano@RRyS:~$ pwd /home/romano romano@RRyS:~$ alias x="cd /bin && ./echo A >/dev/null &" romano@RRyS:~$ x  16611 romano@RRyS:~$ pwd /home/romano
As you can see, the execution of alias
x is carried out in a subshell and so the current directory does not change.
[romano:~] % pwd /home/romano [romano:~] % alias x="cd /bin && ./echo A >/dev/null &" [romano:~] % x  16744  + 16744 done ./echo A >/dev/null 1& [romano:/bin] % pwd /bin [romano:/bin] %
here the directory is changed.
It seems that the
bash has a different priority than in
zsh --- I mean, the command seems to be read as
(cd /tmp && echo A) &
bash and as
cd /tmp && (echo A &)
zsh. Is this correct or the cause of the different behavior is another one?