कैसे bashrc में उर्फ ​​ssh-add / bin / bash करें?


0

यह कैसे काम नहीं करता है?

alias push-bb="ssh-agent /bin/bash && ssh-add ~/.ssh/bitbucker_rsa && git push"

मुझे लगता है कि यह रद्द करता है /bin/bash अंश?

जवाबों:


1

मैं अनुमान लगा रहा हूं कि आप उम्मीद करते हैं && इस तरह काम करने के लिए:

  1. बहाना है कि ssh-agent /bin/bash टाइप किया गया था
  2. बहाना है कि दर्ज दबाया गया था
  3. बहाना है कि ssh-add ~/.ssh/bitbucket_rsa टाइप किया गया था
  4. बहाना है कि दर्ज दबाया गया था ...

लेकिन ऐसा नहीं है कि यह कैसे काम करता है। उपनाम "नकली कीबोर्ड इनपुट" नहीं हैं, और && एक "नकली दर्ज कुंजी" नहीं है। खोल उनकी व्याख्या करता है सीधे आज्ञा के रूप में । तो यह वास्तव में इस तरह काम करता है:

  1. रन ssh-agent /bin/bash
  2. इसके निकलने की प्रतीक्षा करें
  3. रन ssh-add ~/.ssh/bitbucket_rsa
  4. इसके निकलने की प्रतीक्षा करें ...

तो, उपनाम चरण 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'"

यहां, कीबोर्ड इनपुट की प्रतीक्षा करने के बजाय, "नए" बैश को सीधे शेष दो कमांड चलाने के लिए कहा जाता है।


1
अच्छा जवाब, हालांकि सख्ती से && एक मानक से बाहर निकलने के लिए "प्रतीक्षा करने के लिए पूर्ववर्ती आदेश की प्रतीक्षा करें" ; क्या वो। && पूर्ववर्ती आदेश से बाहर निकलने और फिर प्रतीक्षा करने का इंतजार करेंगे केवल दूसरी कमांड चलाएं यदि पहला कमांड '0' के मान से लौटा
qasdfdsaq
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.