"Getting the source directory of a Bash script from within" से प्रेरित, यह करने के लिए रूबी तरीका क्या है?क्या रूबी लिपि बता सकती है कि यह किस निर्देशिका में है?
उत्तर
File.dirname(__FILE__)
आपको स्क्रिप्ट चलाने के सापेक्ष पथ देगा। File.expand_path(File.dirname(__FILE__))
आपको पूर्ण पथ देगा।
ENV ["पीडब्लूडी"] लिनक्स के तहत मेरे लिए सबसे आसान तरीका प्रतीत होता है। मुझे ओएस-अज्ञेय तरीके से पता नहीं है।
पर फंस गए किसी के लिए यह एकमात्र तरीका प्रतीत होता है! मेरे लिनक्स-विशिष्ट सामान्य ज्ञान के लिए अच्छा है। –
यह घर निर्देशिका है, वर्तमान कार्य निर्देशिका या निर्देशिका जहां स्क्रिप्ट स्थित है। –
बी * गजर, नींद की कमी यह करेगी। मेरा मतलब एनएनवी ["पीडब्लूडी"] था। लेकिन बीए का जवाब बेहतर तरीका है। – Shadowfirebird
उपयोग __dir__
रूबी 2.0 के रूप में, __dir__
सबसे आसान तरीका यह प्राप्त करने के लिए है। यह
फ़ाइल की निर्देशिका के कैनोनिकलकृत पूर्ण पथ को वापस करता है जिससे इस विधि को बुलाया जाता है।
__dir__
दस्तावेज़, और "Why is __FILE__ uppercase and __dir__ lowercase?" देखें।
ठीक है, सही उत्तर होने के अलावा' __dir__' से अलग, अपरकेस-बनाम-लोअरकेस अंतर को जोड़ने के लिए धन्यवाद, यह मेरा पहला प्रश्न था क्योंकि इसे ढूंढने के बाद कुंआ :) – SidOfc
उपयोग __dir__
File.dirname(__FILE__)
जहां स्क्रिप्ट संग्रहीत किया जाता है निर्देशिका पाने के लिए एक उचित तरीका नहीं है।
स्क्रिप्ट फ़ाइल के साथ काम करने वाली निर्देशिका और निर्देशिका शुरू करने पर वही है, लेकिन यह बदल सकता है।
उदाहरण के लिए:
Dir.chdir('..') do
puts __dir__
puts File.expand_path(File.dirname(__FILE__))
end
/Desktop/tmp
में संग्रहीत चल रहा यह उत्पादन दे देंगे स्क्रिप्ट फ़ाइल के लिए
/home/mateusz/Desktop/tmp
/home/mateusz/Desktop
यह है कि ऐसा करने के लिए गलत तरीका है और कीड़े हो सकती है। \t ध्यान दें कि एक बार Dir.chdir का उपयोग किया जाता है, यह स्क्रिप्ट संग्रहित होने की तुलना में अलग निर्देशिका हो सकती है। '__dir__' ऐसा करने का सही तरीका है। –
रूबी <2.0 –