जवाबों:
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।