Відповідаючи на це запитання, я виявив дуже смішну (і тонку) різницю між поведінкою bash
та zsh
:
В 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
Як бачимо, виконання псевдоніму x
виконується в підрозділі, і тому поточний каталог не змінюється.
Не в 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] %
тут каталог змінюється.
Схоже , що &
в bash
мають свої пріоритети , ніж в zsh
--- Я маю в виду, команда , здається, читається як
(cd /tmp && echo A) &
в bash
і як
cd /tmp && (echo A &)
в zsh
. Це правильно чи причина різної поведінки - інша?