प्रतीकात्मक कड़ी और सुडोल


10

मैं एक प्रतीकात्मक लिंक बनाता हूं:

ln -s /tmp/folder1 /tmp/folder2

फिर मैं / tmp / folder2 पर जाता हूं और चलाता हूं pwd:

$ cd /tmp/folder2/
$ pwd
/tmp/folder2
$ sudo pwd
/tmp/folder1 # <-- This is the odd part

क्यों करता है pwdके साथ sudoमूल निर्देशिका दे सकता है? मैं एक बैश स्क्रिप्ट लिख रहा हूं और वर्तमान निर्देशिका के पूर्ण पथ की आवश्यकता है। सुडो के साथ मैं मूल निर्देशिका प्राप्त करने में सक्षम नहीं हो सकता।


क्या आपके लक्ष्य में pwd को भौतिक (/ tmp / folder1) पथ या दोनों के लिए तार्किक (/ tmp / folder2) पथ पर लौटना है?
user9517

लक्ष्य
सूडो

जवाबों:


14

लोक निर्माण विभाग के आदेश दोनों अंतर्निहित और / bin / लोक निर्माण विभाग के एक खोल है। सामान्य परिस्थितियों में, बिलिन को / बिन / पीडीडब्ल्यू के लिए प्राथमिकता में चलाया जाएगा। Pwd कमांड को मैन पेज से अंतर्निहित या / बिन / pwd दोनों के रूप में pwd -Lया pwd -Pदोनों के रूप में कहा जा सकता हैpwd -L

-L, - पर्यावरण से पीडब्ल्यूडी का उपयोग करें, भले ही इसमें सहानुभूति शामिल हो

इसलिए जब आप pwd चलाते हैं तो आप वास्तव में pwd -L चलाते हैं जो कि $ PWD में प्रिंट करता है (यदि यह मौजूद है)। जब आप चलाते हैं sudo pwd, तो sudo केवल पर्यावरण चर प्रदान करता है जिसे env_keepनिर्देश के माध्यम से पारित करने के लिए कहा गया है । पीडब्ल्यूडी इस सूची में सामान्य रूप से नहीं है, इसलिए सूडो पीडब्ल्यूडी को यह काम करना पड़ता है कि वह कहां है और प्रभाव के रूप में चलता हैpwd -P

-पी, - रोगनिरोधी सभी सीमलिंक से बचें

समस्या को हल करने का तरीका या तो उपयोग pwd -Pकरना है, यदि आप लगातार भौतिक निर्देशिका पथ चाहते हैं या (@ फेलिक्स कहते हैं) पीडब्ल्यूडी को पर्यावरण चर की सूची में जोड़ने के लिए sudoers में एक env_keep निर्देश के माध्यम से रखें

env_keep += "PWD"  

काम करता है! PWD को env_keep में जोड़े जाने के बाद मुझे sudo pwd -Lतार्किक पथ प्राप्त करने के लिए करने की आवश्यकता है । sudo pwdभौतिक मार्ग लौटाता है।
iDev247

6

बैश में, pwdएक बिलिन है। /bin/pwdजैसा व्यवहार करता है वैसा ही फल देता है sudo pwd

तुम करना चाहोगे

  1. का उपयोग करें sudo pwd -L, जो केवल अगर तुम काम करता है
  2. Defaults env_keep=PWDअपनी sudoersफ़ाइल में शामिल करें
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.