ตอบคำถามนี้ฉันค้นพบความแตกต่างที่ตลกมาก (และบอบบาง) ระหว่างพฤติกรรมใน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
จะดำเนินการใน subshell ดังนั้นไดเรกทอรีปัจจุบันจะไม่เปลี่ยนแปลง
ไม่อยู่ใน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
. สิ่งนี้ถูกต้องหรือสาเหตุของพฤติกรรมที่แตกต่างเป็นสาเหตุอื่นหรือไม่