जब मैं एक सिम्लिंक के माध्यम से सीडी करता हूं, तो पीडब्लू वास्तविक पथ के बजाय सिमिलिंक क्यों दिखाता है?


19

मैंने ln -s 1 2एक निर्देशिका के लिए एक नरम लिंक ( ) बनाया जो निर्देशिका के अंदर है testऔर नरम लिंक को खोला ( cd 2) और वर्तमान पथ का उपयोग करके प्रदर्शित किया pwd। प्रदर्शित पथ था ~/test/2और नहीं ~/test/1

यह विंडोज़ जैसे ओएस में अलग है, शॉर्टकट हमें वास्तविक निर्देशिका में लाता है। मैं थोड़ा उलझन में हूँ कि यह सॉफ्ट लिंक लिनक्स में कैसे काम करता है। क्या यह शॉर्टकट की तरह नहीं है Windows? रास्ता क्यों नहीं है ~/test/1?

 $ mkdir test
 $ cd test
 $ mkdir 1
 $ ln -s 1 2
 $ cd 2
 $ pwd
 /home/dazz/test/2

2
स्क्रीनशॉट हटाने के लिए धन्यवाद। अगली बार, कृपया अपना प्रश्न हटाने और पुन: पोस्ट करने के बजाय संपादित करें। आपके बहुत से प्रश्नों को हटाने से आपको पूछने पर प्रतिबंध लग सकता है। यह प्रतिबंध स्वचालित है इसलिए हम इसके बारे में ज्यादा कुछ नहीं कर पाएंगे। किसी भी मामले में, आपको प्रश्न को संपादित करने के बाद से पुनर्स्थापना की आवश्यकता नहीं है ।
terdon

आप दो बार क्यों पूछते हैं? askubuntu.com/q/610133/367165
AB

एक ही मंच?
17

जवाबों:


18

यह शेल की एक विशेषता है जो यह याद रखता है कि आप जहां थे, वहां कैसे पहुंचे।
यदि आपने realpathस्थापित किया है तो आप कर सकते हैं:

$ realpath 
/home/dazz/test/1

और कमी है कि अगर आपके पास अजगर है:

$ python -c "import os; print(os.path.realpath('.'))"
/home/dazz/test/1

या रीडलिंक (कोर्यूटिल्स से):

$ readlink -f .
/home/dazz/test/1

या /bin/pwd(शेल निर्मित नहीं pwd):

$ /bin/pwd
/home/dazz/test/1

ls -l /proc/$$/cwdकर्नेल के /procफाइलसिस्टम इंटरफ़ेस का लाभ उठाता है।
ब्रूस एडिगर

8
नोट भी pwd -P, वर्तमान निर्देशिका के लिए तार्किक, पथ के बजाय भौतिक मुद्रित करें।
गॉडलीजेक

8

इसके विपरीत pwdऔर /bin/pwd

pwd, जो कई गोले में एक अंतर्निहित कमांड है, आपको बताता है कि आपका शेल आपको कहां लगता है (और इसलिए "नरम लिंक" के रूप में सहानुभूति का व्यवहार करता है जैसे कि वे वास्तविक निर्देशिका थे।

/bin/pwdएक बाहरी प्रोग्राम है जो आपको बताता है कि आप वास्तव में कहां हैं, यदि आवश्यक हो तो फाइलसिस्टम ट्री को ट्रैवर्स करके /। यह सहानुभूति का कोई हिसाब नहीं रखता है क्योंकि जब ऊपर की ओर से गुजरते हैं तो वे मौजूद नहीं होते हैं..


6

अन्य जवाबों ने /bin/pwdशेल के बनाम कवर किया है builtin pwd

यदि आप अपने द्वारा बताई गई विंडोज शैली में सीमलिंक का पालन करना चाहते हैं, तो इसका उपयोग करें cd -P: यह तदनुसार पीडब्ल्यूडी चर को बदल देगा।

यदि आप -Pडिफ़ॉल्ट रूप से उपयोग करना चाहते हैं , तो आप इस लाइन को अपने .bashrcया .zshrc:

set -P

अन्य गोले भिन्न हो सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.