Cevaplama Bu soruyu ben de davranışları arasında çok komik (ve ince) farkı keşfetti bash
ve zsh
:
İçinde 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
Gördüğünüz gibi, takma adın x
yürütülmesi bir alt kabukta gerçekleştirilir ve bu nedenle geçerli dizin değişmez.
İçinde değil 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] %
burada dizin değiştirilir.
Görünüşe göre &
in bash
, öncekinden farklı bir önceliğe sahip - zsh
yani, komut şu şekilde okunuyor gibi görünüyor
(cd /tmp && echo A) &
içinde bash
ve gibi
cd /tmp && (echo A &)
içinde zsh
. Bu doğru mu yoksa farklı davranışların nedeni başka mı?