यह केवल एक शब्दावली का सवाल है, लेकिन जो मेरे सिर में घूमता रहता है।
यह एक एलपीआईसी तैयारी पुस्तक से एक अभ्यास परीक्षा से आता है । पुस्तक के अनुसार सही उत्तर वह ~/Documents
सापेक्ष निर्देशिका है क्योंकि यह गृह निर्देशिका के सापेक्ष है।
हालाँकि, इस पुस्तक में टाइपोस और गलतियों का एक सम्मानजनक अनुपात है, इसलिए मैं वहां लिखी गई सभी चीज़ों को स्वीकार नहीं कर सकता। यहां मैं सहमत नहीं हूं क्योंकि मेरे ~
लिए शेल द्वारा विस्तारित $HOME
चर या वर्तमान उपयोगकर्ता होम निर्देशिका पथ (cf. man bash
) में एक चर के रूप में कार्य करता है , इसलिए वास्तविक पथ वह है /home/myuser/Documents
जो वास्तव में एक निरपेक्ष निर्देशिका है।
यहां तक कि विकिपीडिया , एक बार के लिए, इस विषय पर मेरी कोई मदद नहीं करता है (भले ही यह पुष्टि करता हो कि पुस्तक इस पर गलत है):
एक पूर्ण या पूर्ण पथ वर्तमान कार्य निर्देशिका की परवाह किए बिना किसी फ़ाइल सिस्टम में एक ही स्थान पर इंगित करता है। ऐसा करने के लिए, इसमें रूट डायरेक्टरी होनी चाहिए।
इसके विपरीत, एक रिश्तेदार पथ कुछ दिए गए कार्य निर्देशिका से शुरू होता है, पूर्ण निरपेक्ष पथ प्रदान करने की आवश्यकता से बचता है।
यहां फिर से, मैं सहमत नहीं हूं: इस परिभाषा के अनुसार, वह पथ /opt/kde3/bin/../lib
जो वर्तमान कार्यशील निर्देशिका पर निर्भर नहीं करता है, एक निरपेक्ष होना चाहिए, हालांकि इस पुस्तक के लेखक की वर्तमान समझ इस पथ को एक सापेक्ष बनाती है।
वेबस्टर डिक्शनरी के अनुसार एक त्वरित वेब-खोज सिर्फ मेरी हताशा में इजाफा कर रही है :
निरपेक्ष पथ - रूट निर्देशिका के सापेक्ष एक पथ। इसका पहला वर्ण पथनाम विभाजक होना चाहिए।
तो $HOME/Documents
, या अभी भी $HOME
पूर्ण निर्देशिका नहीं माना जाएगा? या क्या यह परिभाषा चर विस्तार का अर्थ है? शेल के ~
चरित्र के बारे में क्या ? क्या रिश्तेदार बनाम निरपेक्ष निर्देशिका की कोई विश्वसनीय परिभाषा है जो मुझे कहीं मिल सकती है और क्या मैं गलत हूं?
~/foo
एक रिश्तेदार पथ को कॉल करने से पूरी तरह असहमत हूं । आपको जो मिल रहा है वह हार्ड-कोडिंग और पैरामीटराइजेशन के बीच का अंतर है। अधिक जानकारी के लिए मेरा जवाब देखें।
~/Documents
और $HOME/Documents
पथ नहीं हैं। वे विस्तार के बाद पहचान (निरपेक्ष) पथ करते हैं, लेकिन वे स्वयं पथ नहीं हैं। मुझे लगता है कि यूनिक्स / लिनक्स उपयोगकर्ता इस शब्द का उपयोग करने से सहमत हैं, लेकिन इसमें कोई संदेह नहीं है कि उन तारों को स्वयं पथ भी कहा जाता है।
/
, और जिन्हें हम पूर्ण कहते हैं। इस प्रकार सब कुछ क्या शुरू होता है से/
मैं पूर्ण कहेंगे (भले ही यह है/usr/../etc
) और सब कुछ किसी और मैं कहेंगे रिश्तेदार (~/Doc
,Doc
,../john/Doc
,$HOME/...
, ...)। मुद्दा यह है कि निरपेक्ष को वर्तमान कार्यशील निर्देशिका या वर्तमान उपयोगकर्ता की परवाह किए बिना काम करना चाहिए। रिश्तेदार केवल कुछ विशिष्ट संकीर्ण मामलों में ही काम कर सकते हैं।