Rispondendo a questa domanda ho scoperto una differenza molto divertente (e sottile) tra comportamento in bash
e zsh
:
In 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
Come puoi vedere, l'esecuzione dell'alias x
viene eseguita in una subshell e quindi la directory corrente non cambia.
Non in 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] %
qui la directory è cambiata.
Sembra che &
in bash
abbia una priorità diversa da in zsh
--- Voglio dire, il comando sembra essere letto come
(cd /tmp && echo A) &
in bash
e come
cd /tmp && (echo A &)
in zsh
. È corretto o la causa del diverso comportamento è un'altra?