यदि आप cdउर्फ प्रतिस्थापन के बाद छड़ी नहीं करना चाहते हैं , तो (y के साथ एक उपसमूह का उपयोग करें ):
alias my_x="(cd /home/path_to_x && ./x)&"
आप इसे देख सकते हैं
alias test_y="(cd /tmp && sleep 10 ) & "
ध्यान दें कि समाधान
alias my_y="/home/path_to_x/x"
बिल्कुल बराबर नहीं है। वास्तव में, यदि के माध्यम से कहा जाता है my_x, xकार्यक्रम के एक वर्तमान निर्देशिका के साथ चलाया जाता /home/path_to_x/है, जबकि अगर द्वारा कहा जाता है my_y, xएक मौजूदा निर्देशिका जो एक जहां आदेश है साथ चलाया जाता है my_yजारी किया गया था। यह महत्वपूर्ण हो सकता है या नहीं कि क्या xकर रहा है पर निर्भर करता है।
ओपी समाधान के बारे में , यह इसमें काम करता है 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
लेकिन इसमें नहीं 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] %
ऐसा लगता है कि बैश और zsh अलग-अलग तरीकों से सूचियों को निष्पादित करते हैं ... इसलिए स्पष्ट कोष्ठक जोड़ना बेहतर है ... धन्यवाद @EliahKagan इसे इंगित करने के लिए।
alias x='/home/path_to_x/x'।.पहले का उपयोग न करें/home।.(डॉट) वर्तमान निर्देशिका को संदर्भित करता है।