जब आप sudo
, आपको एक पूर्व-निर्धारित मिलता है $PATH
, जो रूट उपयोगकर्ता के डिफ़ॉल्ट पथ की तरह कुछ (माना जाता है) है । आपका कार्यक्रम द्वारा पहचानी गई निर्देशिकाओं की सूची में नहीं है $PATH
।
उदाहरण के लिए देखें
बाहरी आदेशों को निष्पादित करते समय sudo सुरक्षित रहने का प्रयास करता है।
पर्यावरण चर से निपटने के दो अलग-अलग तरीके हैं। डिफ़ॉल्ट रूप से, env_reset
sudoers
विकल्प सक्षम है। इस का कारण बनता है आदेशों युक्त एक न्यूनतम पर्यावरण के साथ निष्पादित करने के लिए TERM
,
PATH
, HOME
, SHELL
, LOGNAME
, USER
और USERNAME
प्रेरक प्रक्रिया से चर के अलावा द्वारा अनुमति दी env_check
और env_keep
sudoers विकल्प। पर्यावरण चर के लिए प्रभावी रूप से एक श्वेतसूची है।
यदि आप sudo
अपने को संरक्षित करने के लिए कॉन्फ़िगर नहीं कर सकते हैं $PATH
, तो प्रोग्राम के पूर्ण पथनाम को निर्दिष्ट करने के लिए सामान्य वर्कअराउंड है। यह उन स्क्रिप्ट के साथ अच्छी तरह से काम नहीं कर सकता है जो (निष्पादित नहीं) निर्देशिका में अन्य निष्पादन योग्य कॉल करते हैं।
cd
।dzdo cd
"कमांड नहीं मिला" का उपयोग करके । बेशक मैं बाद में एहसास हुआ किcd
, एक निर्देशिका में ing मैं में, मदद नहीं करेगा अनुमतियाँ बहुत ज्यादा नहीं है तो मैं या तो एक रूट खोल या करने की आवश्यकता की जरूरत हैdzdo ls
,dzdo mv
आदि बाहर से सामग्री है कि dir।