एक अन्य उपयोगकर्ता के रूप में सुडो के साथ सीडी चलाने में परेशानी


12

मैं किसी अन्य उपयोगकर्ता की ओर से एक शेल पर एक कमांड चलाना चाहता हूं। आदेश निम्नानुसार है:

sudo -u USER cd /home/USER

मुझे मिला

sudo: cd: command not found

सुडो में जाने के लिए कमांड का सही सिंटैक्स क्या है?

जवाबों:


14

cdएक है खोल builtin । आपको शेल बिल्डरों को निष्पादित करने के लिए शेल को आमंत्रित करना होगा:

sudo -u USER sh -c 'cd /home/USER'

या

sudo -u USER bash -c 'cd /home/USER'

1
यह वास्तव में उपयोगी कुछ भी नहीं करेगा --- शेल सही होने के बाद बाहर निकल जाएगा cd। ओपी शायद चाहते हैं sudo -i
व्युत्पन्न

5

cdएक बाहरी कमांड नहीं है, यह केवल शेल बिलिन है, इसलिए sudoइसे निष्पादित नहीं किया जा सकता है। cdकेवल शेल शेल के रूप में मौजूद होने का कारण यह है कि एक प्रक्रिया किसी अन्य प्रक्रिया की वर्तमान निर्देशिका को प्रभावित नहीं कर सकती है; इसलिए एक प्रोग्राम जो वर्तमान निर्देशिका को बदलता है और तुरंत बाहर निकल जाता है बेकार है। (लगभग बेकार: एक cdकार्यक्रम एक स्थिति लौटाएगा जो इंगित करता है कि क्या यह सफल था।)

यदि आप किसी निर्देशिका में बदलना चाहते हैं और फिर किसी अन्य उपयोगकर्ता के रूप में कमांड चलाते हैं, तो एक शेल चलाएं जो यह सब करता है।

sudo -u SOMEUSER sh -c 'cd /path/to/directory && dosomething'

1

मैं उपयोग करता हूं: sudo su - USERNAMEऔर फिर आपको उस उपयोगकर्ता के रूप में जो चाहिए। सिर्फ टाइप करने के लिएexit


3
के रूप में लॉगिंग USERNAMEऔर फिर कमांड निष्पादित करना अलग है कि सीधे कमांड के रूप में चल रहा हैUSERNAME
पंड्या
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.