डबल रूट फ़ोल्डर बनाम एकल रूट फ़ोल्डर


14

मेरे लिनक्स बॉक्स पर, बाश में, मेरे पास "डबल रूट" फ़ोल्डर तक पहुंच है जिसे दो फ़ॉरवर्ड स्लैश द्वारा दर्शाया गया है:

tomas:~ $ cd /
tomas:/ $ ls
bin/ cdrom@ ...
tomas:/ $ cd //
tomas:// $ ls 
bin/ cdrom@ ...

फ़ोल्डर और उसके सबफ़ोल्डर की सामग्री "सामान्य" एकल स्लैश रूट के समान है। जब मैं अपने सबफ़ोल्डरों का उपयोग करता हूं तो डबल स्लैश दूर नहीं जाता है। एनॉमली खुद को तीन या अधिक स्लैश के साथ नहीं दोहराता है; ये मूल के लिए समानार्थी शब्द हैं:

tomas:// $ cd home/tomas
tomas://home/tomas $ cd ///
tomas:/ $ cd ////
tomas:/ $

यह किस तरह की जगह है? यह एक बग है? क्या कोई एनाउमली समझा सकता है?


अच्छा सवाल - मैंने उसी व्यवहार पर गौर किया लेकिन कभी नहीं पूछा कि ऐसा क्यों होता है।
लजुएट

जवाबों:


18

से बैश पूछे जाने वाले प्रश्न E10 :

E10) 'cd //' $ PWD को '//' के रूप में क्यों छोड़ता है?

POSIX.2, 'cd' के अपने विवरण में, कहता है कि तीन या अधिक अग्रणी स्लैश को वर्तमान कार्य निर्देशिका को कैनोनिकलाइज़ करते समय एक ही स्लैश से बदला जा सकता है।

ऐतिहासिक अनुकूलता के लिए, मैं यह मानता हूं। यूनिक्स के कुछ संस्करणों और शुरुआती नेटवर्क फ़ाइल सिस्टम, सर्वर 'होस्टनाम' पर 'पथ' तक पहुंचने के लिए फॉर्म // होस्टनाम / पथ के पथ का उपयोग करते थे।


1
डोमेन / OS एक ऐसी प्रणाली है।
15:16 बजे यूज़र 1686

1
डबल स्लेश चीज़ का उपयोग अभी भी किया जाता है। यह यूनिवर्सल का हिस्सा है (या यूनिफ़ॉर्म; मैं एक प्राथमिक स्रोत को खोजने के लिए प्रतीत नहीं कर सकता) नामकरण कन्वेंशन या यूएनसी। यह विंडोज, यूनिक्स और लिनक्स में दिखाई देता है। यह URL में दोहरे स्लैश का उपयोग करने का कारण बनता है।
आइजैक राबिनोविच

1

"यह एक बग नहीं है, यह एक सुविधा है!"

आप अभी भी उसी मूल निर्देशिका में हैं। मुझे इसकी उत्पत्ति का पता नहीं है, लेकिन इस पर संदेह है कि निरपेक्ष रास्तों के निर्माण के साथ इसका कुछ लेना-देना हो सकता है। अगर किसी और को पक्का पता है, तो पाइप करें।


0

एकाधिक स्लैश को केवल आपके द्वारा उपयोग किए जाने वाले टूल द्वारा नजरअंदाज कर दिया जाता है और आप हमेशा एक ही रूट फ़ोल्डर में हो रहे हैं।


तो / के रूप में / छोड़ते समय bash /// में बदलाव क्यों होता है?
टॉमस

0

पथनाम-रिज़ॉल्यूशन उद्देश्यों के लिए मल्टीपल स्लैश को एकल स्लैश के रूप में माना जाता है।

शेल प्रॉम्प्ट में आप जो देख रहे हैं, वह bash PS1 हैंडलिंग की एक कलाकृति है (bash manpage में सेक्शन "PROMPTING" देखें)।

[root@linux /]# cd /    ; echo $PWD
/
[root@linux /]# cd //   ; echo $PWD
//
[root@linux //]# cd /// ; echo $PWD
/
[root@linux /]# cd //// ; echo $PWD
/

परिणाम केवल प्रस्तुति का विषय है; आप हमेशा एक ही रूट डायरेक्टरी में होते हैं। आप इसे देखकर जांच कर सकते हैं /proc/$$/root

[संपादित करें] खैर मुझे यह कभी पता नहीं था: http://www.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap04.html#tag_04_11 "//" का अर्थ मानकों द्वारा छोड़ा गया है, लेकिन "///" और अधिक स्लैश "/" के बराबर हैं।

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