जवाबों:
मैं अनुमान लगा रहा हूं कि आप उम्मीद करते हैं &&
इस तरह काम करने के लिए:
ssh-agent /bin/bash
टाइप किया गया था ssh-add ~/.ssh/bitbucket_rsa
टाइप किया गया था लेकिन ऐसा नहीं है कि यह कैसे काम करता है। उपनाम "नकली कीबोर्ड इनपुट" नहीं हैं, और &&
एक "नकली दर्ज कुंजी" नहीं है। खोल उनकी व्याख्या करता है सीधे आज्ञा के रूप में । तो यह वास्तव में इस तरह काम करता है:
ssh-agent /bin/bash
ssh-add ~/.ssh/bitbucket_rsa
तो, उपनाम चरण 1 पर "रद्द" नहीं करता है।
यह किया था वास्तव में आप / बिन / बैश की एक नई प्रति शुरू करते हैं, और अब आप बैश के अंदर चल रहे हैं - वे सिर्फ एक दूसरे के समान दिखते हैं, इसलिए आपने इसे नोटिस नहीं किया। लेकिन जरा ध्यान से देखिए ps xf
और आप देखेंगे:
123 xterm
└ 124 bash waiting for its child (124 ssh-agent) to exit
└ 678 ssh-agent waiting for its child (679 bash) to exit
└ 679 bash waiting for keyboard input
इसलिए बदले में उर्फ है चरण 1 समाप्त होने की प्रतीक्षा कर रहा है ।
अगर आपने टाइप किया है exit
अभी, तो 2 बैश (ssh- एजेंट के साथ) से बाहर निकल जाएगा, और आपका उपनाम होगा जारी रहना उस बिंदु से, और सभी शेष कमांड में व्याख्या की जाएगी मूल बैश खोल।
इसके बजाय, आप शायद यह चाहते हैं:
alias push-bb="ssh-agent /bin/bash -c 'ssh-add ~/.ssh/bitbucker_rsa && git push'"
यहां, कीबोर्ड इनपुट की प्रतीक्षा करने के बजाय, "नए" बैश को सीधे शेष दो कमांड चलाने के लिए कहा जाता है।
&&
एक मानक से बाहर निकलने के लिए "प्रतीक्षा करने के लिए पूर्ववर्ती आदेश की प्रतीक्षा करें";
क्या वो।&&
पूर्ववर्ती आदेश से बाहर निकलने और फिर प्रतीक्षा करने का इंतजार करेंगे केवल दूसरी कमांड चलाएं यदि पहला कमांड '0' के मान से लौटा