Linux में फ़ाइल नाम और .filename के बीच क्या अंतर है


10

के बीच क्या अंतर है filename तथा ./filename? किन परिस्थितियों में एक दूसरे को पसंद किया जाता है?

जवाबों:


18

डेटाफाइल्स के लिए, इससे कोई फर्क नहीं पड़ता - दोनों स्टेटमेंट आपकी वर्तमान निर्देशिका में डेटा फ़ाइल को संदर्भित करेंगे। (उदाहरण के लिए, cat filename तथा cat ./filename शब्दार्थ समान हैं।)

यह एक अलग कहानी है अगर प्रश्न में फ़ाइल नाम एक को संदर्भित करता है निष्पादन , यानी आप कमांड लाइन पर टाइप करने वाली पहली (या केवल) चीज़ है। ./filename अपने वर्तमान निर्देशिका में निष्पादन योग्य के लिए देखेंगे, और कहीं नहीं। filenameदूसरी ओर, पर्यावरण चर का मूल्यांकन करेगा PATH, और देखो filename उसमें संग्रहीत हर निर्देशिका में (जिसमें आपकी वर्तमान निर्देशिका शामिल हो सकती है या नहीं भी)।

./filename (या कोई अन्य /path/to/filename ) इस तरह से पसंद किया जाता है जब आप एक निष्पादित करना चाहते हैं विशिष्ट निष्पादन योग्य, आपके PATH में पाया जाने वाला पहला नहीं है।


6

यदि आप एक कार्यक्रम चला रहे हैं, filename अपने पहले वाले को चलाने के लिए कहते हैं $PATH और दूसरा वर्तमान निर्देशिका में एक को चलाने के लिए कहता है।

यदि आप उस फ़ाइलनाम को किसी प्रोग्राम में तर्क के रूप में उपयोग कर रहे हैं do_something filename या do_something ./filename तो उनका मतलब वही है।


5

आप कमांड निष्पादन की बात कर रहे हैं, है ना?

एक पर्यावरण चर है PATH जिसमें कुछ सिस्टम निर्देशिकाएं शामिल हैं, जो अर्धविराम द्वारा सीमांकित हैं। जब आप टाइप करें command प्रणाली इन निर्देशिकाओं में उस क्रम में दिखती है जिस क्रम में वे & lt; कमांड & gt; यदि यह पता चलता है, यह इसे निष्पादित करने की कोशिश करता है। आप अपने PATH के माध्यम से देख सकते हैं echo $PATH बाश में। उदाहरण के लिए:

$ गूंज $ पाथ
/ Sbin: / बिन: / usr / sbin: / usr / bin: / usr / खेल: / usr / स्थानीय / sbin: / usr / स्थानीय / बिन: / घर / ivanatora / बिन: / usr / स्थानीय / केडीई 4 / bin : / usr / स्थानीय / केडीई 4 / bin

जब आप टाइप करें ./filename आप सटीक पथ निर्दिष्ट कर रहे हैं: वर्तमान निर्देशिका। आप देख सकते हैं कि वर्तमान निर्देशिका शायद ही कभी आपके PATH (सुरक्षा कारणों से) में हो। इसलिए यदि आप वर्तमान निर्देशिका से किसी फ़ाइल को निष्पादित करना चाहते हैं, तो आप उपयोग करते हैं ./filename

किसी फ़ाइल को उसके पथ के द्वारा निष्पादित करने के लिए (विशेषकर यदि वह $ PATH में नहीं है) तो आप टाइप भी कर सकते हैं <path>/file, पसंद:

/ Sbin / ifconfig


3

निष्पादन योग्य सुरक्षा इस अंतर का मुख्य कारण है।

आप नहीं चाहते । (वर्तमान वर्किंग डायरेक्टरी या पीडब्ल्यूडी) आपके रास्ते में है क्योंकि कोई ट्रोजन हो सकता है http://en.wikipedia.org/wiki/Trojan_horse_%28computing%29 पीएस या एलएस जैसे महत्वपूर्ण निष्पादन योग्य, आपके पीडब्ल्यूडी में और खराब डेटा प्रस्तुत करके आपको बेवकूफ बनाते हैं।


1

यह निर्भर करता है कि आप किन परिस्थितियों का उपयोग कर रहे हैं।

एक तर्क के रूप में, उदाहरण के लिए "कार्यक्रम फ़ाइल नाम", फिर यह कार्यक्रम पर निर्भर है, लेकिन आम तौर पर वे समान हैं।

एक प्रोग्राम नाम के रूप में, उदाहरण के लिए "फ़ाइल नाम तर्कों", फिर "फ़ाइल नाम तर्क" बाइनरी को खोजने के लिए पीएटीएच खोजेगा, जबकि "./filename तर्कों" वर्तमान निर्देशिका में कार्यक्रम का उपयोग करेगा। यह स्पष्ट रूप से उपयोगी है अगर। पेट में नहीं है, लेकिन यह भी एक का उपयोग करने के लिए उपयोगी है, भले ही। पथ में है, शायद इसलिए कि यह पहले की प्रविष्टि से मेल खाता है।

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