स्क्रिप्ट फ़ाइल स्थान
अनुमतियाँ सेट होने के साथ, अब हम अपनी स्क्रिप्ट निष्पादित कर सकते हैं:
[मुझे@लिनक्सबॉक्स ~]$ ।/हैलो वर्ल्ड
नमस्ते दुनिया!
[मुझे@लिनक्सबॉक्स ~]$ ।/हैलो वर्ल्ड
नमस्ते दुनिया!
स्क्रिप्ट को चलाने के लिए, हमें स्क्रिप्ट नाम के पहले एक स्पष्ट पथ लिखना होगा। यदि हम नहीं करते हैं, तो हमें यह मिलता है:
[मुझे@लिनक्सबॉक्स ~]$ नमस्ते दुनिया
बैश: हेलो_वर्ल्ड: कमांड नहीं मिला
[मुझे@लिनक्सबॉक्स ~]$ नमस्ते दुनिया
बैश: हेलो_वर्ल्ड: कमांड नहीं मिला
ऐसा क्यों है? हमारी स्क्रिप्ट को अन्य कार्यक्रमों से क्या अलग बनाता है? जैसा कि यह पता चला, कुछ भी नहीं। हमारी स्क्रिप्ट ठीक है. इसका स्थान ही समस्या है. अध्याय 11 में, हमने चर्चा की पथ पर्यावरण चर और सिस्टम निष्पादन योग्य प्रोग्रामों की खोज कैसे करता है, इस पर इसका प्रभाव। संक्षेप में कहें तो, यदि कोई स्पष्ट पथ निर्दिष्ट नहीं है, तो सिस्टम को हर बार निष्पादन योग्य प्रोग्राम ढूंढने के लिए निर्देशिकाओं की एक सूची खोजनी पड़ती है। इस प्रकार सिस्टम निष्पादित करना जानता है
/bin/ls जब हम कमांड लाइन पर ls टाइप करते हैं। / बिन निर्देशिका उन निर्देशिकाओं में से एक है जिन्हें सिस्टम स्वचालित रूप से खोजता है। निर्देशिकाओं की सूची PATH नामक एक पर्यावरण चर के भीतर रखी जाती है। PATH वैरिएबल में खोजी जाने वाली निर्देशिकाओं की एक कोलन-पृथक सूची होती है। हम PATH की सामग्री देख सकते हैं:
स्क्रिप्ट फ़ाइल स्थान
[मुझे@लिनक्सबॉक्स ~]$ गूंज $PATH
/home/me/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:
/bin:/usr/games
[मुझे@लिनक्सबॉक्स ~]$ गूंज $PATH
/home/me/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:
/bin:/usr/games
यहां हम अपनी निर्देशिकाओं की सूची देखते हैं। यदि हमारी स्क्रिप्ट सूची में किसी भी निर्देशिका में स्थित होती, तो हमारी समस्या हल हो जाती। सूची में पहली निर्देशिका पर ध्यान दें,
/घर/मैं/बिन. अधिकांश लिनक्स वितरण उपयोगकर्ता की होम निर्देशिका में एक बिन निर्देशिका रखने के लिए PATH वैरिएबल को कॉन्फ़िगर करते हैं, ताकि उपयोगकर्ता अपने स्वयं के प्रोग्राम निष्पादित कर सकें। इसलिए यदि हम बिन निर्देशिका बनाते हैं और उसमें अपनी स्क्रिप्ट डालते हैं, तो इसे अन्य प्रोग्रामों की तरह काम करना शुरू कर देना चाहिए:
[मुझे@लिनक्सबॉक्स ~]$ एमकेडीआईआर बिन [मुझे@लिनक्सबॉक्स ~]$ एमवी हैलो_वर्ल्ड बिन [मुझे@लिनक्सबॉक्स ~]$ नमस्ते दुनिया
नमस्ते दुनिया!
[मुझे@लिनक्सबॉक्स ~]$ एमकेडीआईआर बिन [मुझे@लिनक्सबॉक्स ~]$ एमवी हैलो_वर्ल्ड बिन [मुझे@लिनक्सबॉक्स ~]$ नमस्ते दुनिया
नमस्ते दुनिया!
और ऐसा ही होता है.
अगर पथ वेरिएबल में निर्देशिका नहीं है, हम इस पंक्ति को अपने में शामिल करके इसे आसानी से जोड़ सकते हैं .bashrc फ़ाइल:
निर्यात पथ=~/बिन:"$पथ"
निर्यात पथ=~/बिन:"$पथ"
यह परिवर्तन किए जाने के बाद, यह प्रत्येक नए टर्मिनल सत्र में प्रभावी होगा। वर्तमान टर्मिनल सत्र में परिवर्तन लागू करने के लिए, हमें शेल को फिर से पढ़ना होगा .bashrc फ़ाइल। इसे "सोर्सिंग" द्वारा किया जा सकता है:
[मुझे@लिनक्सबॉक्स ~]$ . .bashrc
[मुझे@लिनक्सबॉक्स ~]$ . .bashrc
बिन्दु (.) कमांड का पर्यायवाची है स्रोत कमांड, एक शेल बिल्टिन जो शेल कमांड की एक निर्दिष्ट फ़ाइल को पढ़ता है और इसे कीबोर्ड से इनपुट की तरह मानता है।
नोट: उबंटू (और अधिकांश अन्य डेबियन-आधारित वितरण) स्वचालित रूप से जोड़ता है
~/bin निर्देशिका को PATH वैरिएबल में बदलें यदि उपयोगकर्ता की .bashrc फ़ाइल निष्पादित होने पर ~/bin निर्देशिका मौजूद हो। इसलिए, उबंटू सिस्टम पर, यदि हम ~/bin निर्देशिका बनाते हैं और फिर लॉग आउट करते हैं और फिर से लॉग इन करते हैं, तो सब कुछ काम करता है।