मैंने दूरस्थ ssh कमांडों के तर्कों से बचने के लिए प्रश्नों और उत्तरों को देखा है। मेरा प्रश्न है: वास्तव में दूसरा पार्सिंग कहाँ और कब होता है?
यदि मैं निम्नलिखित चलाता हूं:
$ ssh otherhost pstree -a -p
मैं आउटपुट में निम्नलिखित देखता हूं:
|-sshd,3736
| `-sshd,1102
| `-sshd,1109
| `-pstree,1112 -a -p
दूरस्थ कमांड ( pstree
) के लिए मूल प्रक्रिया है sshd
, वहाँ कोई भी ऐसा प्रतीत नहीं होता है जो कमांड लाइन के तर्कों को दूरस्थ कमांड पर पार्स कर रहा हो, इसलिए ऐसा प्रतीत नहीं होता है कि डबल क्विटिंग या बचना आवश्यक होगा () लेकिन यह निश्चित रूप से है)। अगर इसके बजाय मैं पहले वहां बैठता हूं और एक लॉगिन शेल प्राप्त करता pstree -a -p
हूं , और फिर रन करता हूं तो मुझे आउटपुट में निम्नलिखित मिलते हैं:
├─sshd,3736
│ └─sshd,3733
│ └─sshd,3735
│ └─bash,3737
│ └─pstree,4130 -a -p
तो स्पष्ट रूप से वहां एक bash
शेल है जो उस मामले में कमांड लाइन पार्सिंग करेगा। लेकिन जिस मामले में मैं सीधे रिमोट कमांड का उपयोग करता हूं, वहां कोई शेल नहीं लगता है, इसलिए दोहरा उद्धरण आवश्यक क्यों है?