Respondiendo a esta pregunta descubrí una diferencia muy divertida (y sutil) entre el comportamiento en bash
y zsh
:
En 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 puede ver, la ejecución del alias x
se lleva a cabo en una subshell y, por lo tanto, el directorio actual no cambia.
No en 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] %
Aquí se cambia el directorio.
Parece que el &
in bash
tiene una prioridad diferente que en zsh
--- Quiero decir, el comando parece leerse como
(cd /tmp && echo A) &
en bash
y como
cd /tmp && (echo A &)
en zsh
. ¿Es esto correcto o la causa del comportamiento diferente es otra?