यदि आप 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
।.
(डॉट) वर्तमान निर्देशिका को संदर्भित करता है।