जवाबों:
cd
एक है खोल builtin । आपको शेल बिल्डरों को निष्पादित करने के लिए शेल को आमंत्रित करना होगा:
sudo -u USER sh -c 'cd /home/USER'
या
sudo -u USER bash -c 'cd /home/USER'
cd
एक बाहरी कमांड नहीं है, यह केवल शेल बिलिन है, इसलिए sudo
इसे निष्पादित नहीं किया जा सकता है। cd
केवल शेल शेल के रूप में मौजूद होने का कारण यह है कि एक प्रक्रिया किसी अन्य प्रक्रिया की वर्तमान निर्देशिका को प्रभावित नहीं कर सकती है; इसलिए एक प्रोग्राम जो वर्तमान निर्देशिका को बदलता है और तुरंत बाहर निकल जाता है बेकार है। (लगभग बेकार: एक cd
कार्यक्रम एक स्थिति लौटाएगा जो इंगित करता है कि क्या यह सफल था।)
यदि आप किसी निर्देशिका में बदलना चाहते हैं और फिर किसी अन्य उपयोगकर्ता के रूप में कमांड चलाते हैं, तो एक शेल चलाएं जो यह सब करता है।
sudo -u SOMEUSER sh -c 'cd /path/to/directory && dosomething'
मैं उपयोग करता हूं: sudo su - USERNAME
और फिर आपको उस उपयोगकर्ता के रूप में जो चाहिए। सिर्फ टाइप करने के लिएexit
USERNAME
और फिर कमांड निष्पादित करना अलग है कि सीधे कमांड के रूप में चल रहा हैUSERNAME
cd
। ओपी शायद चाहते हैंsudo -i
।