'Sudo [कमांड]' और 'sudo sh [कमांड] में क्या अंतर है?


13

मैं अपने Ubuntu 12.04.2 LTS में VMware वर्कस्टेशन स्थापित करने की कोशिश कर रहा हूं। यदि मैं निम्नलिखित कमांड निष्पादित करता हूं:

sudo ./VMware-Workstation-9.0.1-894247.x86_64.bundle

यह एक ही बार में समाप्त होता है और स्थापना कभी भी शुरू नहीं होती है।

अगर मैं इस कमांड को निष्पादित करता हूं:

sudo sh ./VMware-Workstation-9.0.1-894247.x86_64.bundle

इंस्टॉलर सफलतापूर्वक लॉन्च किया जा सकता है।

इससे फर्क क्यों पड़ता है?


संबंधित: askubuntu.com/questions/141928/…
Takkat

के रूप में अच्छी तरह से संबंधित: askubuntu.com/questions/70534/…
नेन

जवाबों:


13

यदि फ़ाइल निष्पादन योग्य के रूप में चिह्नित नहीं है, तो आपको इसे निष्पादित करने के लिए कमांड शेल दुभाषिया को कॉल करने की आवश्यकता है।

उदाहरण:

  • sudo sh fooखुल जाएगा foo के साथ shका उपयोग कर sudo विशेषाधिकार।

  • sudo bash fooखुल जाएगा foo के साथ bashका उपयोग कर sudo विशेषाधिकार।

  • sh fooखुल जाएगा foo के साथ shअपने उपयोगकर्ता के विशेषाधिकार का उपयोग करते हुए।

  • bash fooखुल जाएगा foo के साथ bashअपने उपयोगकर्ता के विशेषाधिकार का उपयोग करते हुए।

यदि आप किसी फ़ाइल को निष्पादन योग्य के रूप में चिह्नित करते हैं, तो आपको इसे कॉल करने की आवश्यकता है ./fooऔर क्योंकि इसे इस तरह से चिह्नित किया गया है, इसे परिभाषित कमांड शेल दुभाषिया के साथ पढ़ा जाएगा और एक को परिभाषित करने की आवश्यकता के बिना निष्पादित किया जाएगा।

ls -Fफ़ाइलों को सूचीबद्ध करेगा और निष्पादन योग्य वस्तुओं को * के साथ चिह्नित करेगा ।

किसी फ़ाइल पर निष्पादित बिट को सक्षम करने के लिए (और इसे इस तरह से निष्पादन योग्य बनाएं) कमांड का उपयोग करें chmod +x foo

आपके द्वारा निष्पादन योग्य फ़ाइल का उपयोग करने के लिए आपके मामले में आप तब कमांड का उपयोग करेंगे

chmod +x VMware-Workstation-9.0.1-894247.x86_64.bundle

और तब आप इसे या तो चला पाएंगे

sudo sh ./VMware-Workstation-9.0.1-894247.x86_64.bundleया सिर्फ टाइप करके sudo ./VMware-Workstation-9.0.1-894247.x86_64.bundle


12

Sh कमांड चलाने के लिए एक शेल है, इसलिए सुडो के साथ श को निष्पादित करने से आपको एक रूट शेल मिलता है। इसका मतलब है कि उस शेल के सभी कमांड रूट के रूप में निष्पादित होते हैं। मेरा अनुमान है कि स्क्रिप्ट कुछ और निष्पादित करती है, जिसे रूट की आवश्यकता होती है, हालांकि जब आप केवल sudo नहीं sudo sh का उपयोग करते हैं, तो कुछ और सामान्य उपयोगकर्ता के रूप में निष्पादित होता है, हालांकि श के साथ सब कुछ रूट के रूप में निष्पादित किया जाएगा।


आपके उत्तर के लिए धन्यवाद। मेरी प्रतिष्ठा 15 से कम है इसलिए मैं आपके उत्तर के लिए वोट नहीं कर सकता। लेकिन ,,, धन्यवाद!
Landy

1
स्वीकृत उत्तर में कुछ और विवरण हैं लेकिन मुझे लगता है कि यह वास्तव में एक महत्वपूर्ण बिंदु है जिसके बारे में लोगों को जानकारी होनी चाहिए।
क्रिस्टोफर हंटर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.