आप वास्तव में हैं /home/cpm135/public_html/class
- यह "मेरे वर्तमान कामकाजी निर्देशिका क्या है" के सवाल का एकमात्र सही उत्तर है।
जब आप देखें /var/lib/class
... कि वास्तव में आप कहां हैं, लेकिन इस बारे में अधिक नहीं है कि आप किस रास्ते पर पहुंचे थे ।
जब आप दौड़ते हैं /bin/pwd
, तो यह आपकी वर्तमान कार्यशील निर्देशिका को देखकर पता लगाता है। और .. निर्देशिका (शीर्ष पर सूचीबद्ध ls -la
), किस निर्देशिका में काम कर रही है .. के साथ मेल खाता है। और तब तक पीछे की ओर काम करना .. और। उसी निर्देशिका का संदर्भ लें। एक बार यह सब हो जाने के बाद, यह जानता है कि आपकी वर्तमान कार्यशील निर्देशिका क्या है।
जब आप pwd
शेल-इन- रन चलाते हैं , तो यह इस प्रक्रिया का पालन नहीं करता है (हालांकि अगर जरूरत हो तो इसमें से कुछ कर सकता है) - इसके बजाय, यह उस पथ को याद करता है जिसे आपने यहां लाने के लिए लिया था। इसलिए हर बार जब आप एक cd
कमांड करते हैं, तो आपका शेल याद रखता है कि रास्ते के हिस्से के रूप में आप अभी कहाँ हैं, और आपके द्वारा किए गए pwd
सभी cd
कमांड के आधार पर इसकी गणना करता है - जो आपका वास्तविक हो सकता है या नहीं। कार्यकारी डाइरेक्टरी।
चीजें वास्तव में अजीब हो सकती हैं जब आप एक करते हैं ln -s . foo
और cd
फू में रखते हैं - /bin/pwd
कहेंगे कि आप अभी भी एक ही निर्देशिका में हैं, लेकिन शेल बिलीन pwd
आप कहेंगे /foo/foo/foo/foo/foo/foo
- भले ही ऐसी कोई निर्देशिका अभी भी मौजूद नहीं है। (उस ने कहा - आप शायद इसमें हो सकते cd
हैं।)
यदि निर्देशिकाओं का नाम बदला जाता है, तो भ्रम का एक अन्य स्रोत है। /bin/pwd
तब तुरंत परिवर्तन होगा, लेकिन अंतर्निहित pwd
जब तक आप ऐसा कुछ नहीं करेंगे जो यह बताता है कि पुरानी निर्देशिका का नाम मायने नहीं रखता है।