उत्तर देना इस सवाल का मैं में व्यवहार के बीच एक बहुत ही अजीब (और सूक्ष्म) अंतर की खोज की 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
। क्या यह सही है या अलग व्यवहार का कारण एक और है?