शेल स्क्रिप्ट को वैश्विक कैसे बनाया जाए?


84

मैं मैक के ओएस 10.6 पर हूं, और मैं शेल स्क्रिप्टिंग के बारे में एक या दो सीखने की कोशिश कर रहा हूं। मैं समझता हूं कि शेल स्क्रिप्ट को कैसे सहेजा जाए और इसे निष्पादन योग्य बनाया जाए, लेकिन मैं सोच रहा हूं कि मैं क्या कर सकता हूं या जहां मैं इसे वैश्विक बनाने के लिए फाइल को बचा सकता हूं (अर्थात, कोई फर्क नहीं पड़ता कि मैं किस फ़ोल्डर में हूं)।

उदाहरण के लिए, यदि मैं /। उपयोगकर्ता / उपयोगकर्ता नाम / निर्देशिका में एक .sh फ़ाइल सहेजता हूं और इसे निष्पादन योग्य बनाता हूं, तो मैं केवल उस स्क्रिप्ट को उस विशिष्ट निर्देशिका में निष्पादित कर सकता हूं। यदि मैं उदाहरण के लिए / उपयोगकर्ता / उपयोगकर्ता नाम / डाउनलोड पर नेविगेट करता हूं, तो मैं स्क्रिप्ट निष्पादित नहीं कर सकता।

साथ ही, शेल स्क्रिप्टिंग के बारे में अधिक जानने के लिए संसाधनों का कोई भी सुझाव मददगार होगा। धन्यवाद


1
PATHपहले पर्यावरण चर के बारे में पढ़ें , फिर सवाल अपडेट करें।
एस.एल.टी.

जवाबों:



44

परंपरागत रूप से, ऐसी स्क्रिप्ट या तो अंदर जाती हैं ~/bin(यानी: आपके घर की निर्देशिका में बिन निर्देशिका) या /usr/local/bin/पूर्व का मतलब है कि स्क्रिप्ट केवल आपके लिए काम करेगी, बाद वाली स्क्रिप्ट उन स्क्रिप्ट के लिए है जिन्हें आप चाहते हैं कि कोई भी सिस्टम चलाने में सक्षम हो।

यदि आप इसे डालते हैं ~/bin, तो आपको इसे अपने PATH पर्यावरण चर में जोड़ना पड़ सकता है। /usr/local/binपहले से ही रास्ते पर होना चाहिए।


30

इसे करने के दो तरीके हैं -

  1. अपनी स्क्रिप्ट usr / स्थानीय / बिन में रखें और सुनिश्चित करें कि यह निष्पादन योग्य है (chmod + x my_script) (यह पहले से ही पथ में सेट है, आप एक गूंज $ PATH कर के देख सकते हैं)
  2. अपने घर निर्देशिका में एक फ़ोल्डर बनाएं जिसे बिन कहा जाता है। (आपकी निजी लिपियों के लिए)
    • सीडी ~ (आप अपने घर निर्देशिका के लिए ले जाता है)
    • mkdir बिन (एक बिन फ़ोल्डर बनाएँ)
    • vim .bash_profile (पथ वातावरण चर सेट करने के लिए)
    • PATH = ~ / bin: $ PATH निर्यात करें (फिर मैं इस पंक्ति को जोड़ूँ और फिर esc टाइप करूँ: wq)
    • अब आप बस अपनी स्क्रिप्ट का नाम टाइप कर सकते हैं और इसे अपनी इच्छानुसार कहीं से भी चला सकते हैं।

** नोट : यदि आप अपने पूरे फ़ाइलनाम को लिखने के बजाय एक संक्षिप्त कमांड के साथ स्क्रिप्ट को चलाना चाहते हैं,
alias myscript='my_script.sh'
तो अपने .bash_profile में निम्न जोड़ें: तब आप बस टाइप करके स्क्रिप्ट चला सकते हैं myscript। (आप जो चाहें उर्फ ​​में उप कर सकते हैं)


4

मैक ऑपरेटिंग सिस्टम में

  • Bash ~ / .bashrc फ़ाइल खोलें।
  • अपनी PashH फ़ाइल का उपयोग करके अपनी स्क्रिप्ट का पथ जोड़ें, जिसमें PATH = "$ PATH: /Users/sher.mohammad/Office/ults/ultsShell" का उपयोग करके।
  • अपनी ~। / Bash_profile फ़ाइल खोलें और [[-s ~ / .bashrc]] && स्रोत ~ / .bashrc जोड़ें।
  • नई टर्मिनल विंडो खोलें अब जब भी आप अपना टर्मिनल खोलेंगे आपकी स्क्रिप्ट लोड हो जाएगी

क्यों नहीं सीधे में डाल दिया .bash_profile? यह बहुत सरल है (और उस स्रोत .bashrc बात मेरे लिए कभी काम नहीं किया)।
सेज़िटलिन

मैंने शोध किया कि मैंने पाया कि जब आप लॉगिन करते हैं तो bash_profile निष्पादित होता है, bashrc का उपयोग गैर लॉगिन शेल के लिए किया जाता है, OS X डिफ़ॉल्ट रूप से लॉगिन शेल और लोड bash_profile की तरह होता है, इसलिए bash_profile में जोड़ना ठीक काम करेगा, और यदि आप bashrc में लिखते हैं तो आपने [[-] लिखा है। s ~ / .bashrc]] && source ~ / .bashrc in bash_profile, bashrc को लोड करने के लिए जब bash_profile लॉगिन समय पर चलती है
शेर मोहम्मद

4

यह एक सुपर आसान है अगर आप अपनी bashrc फाइल से परिचित हैं! यह पूरी तरह से सिर्फ आपकी .bashrc फ़ाइल का उपयोग करेगा और इसे पूरा करने में 2 सेकंड का समय लगेगा।

(मैं आर्क लिनक्स मंज़रो का उपयोग करता हूं इसलिए मैं उपयोग करता हूं। मेरे घर की निर्देशिका में .bashrc स्थित है)

आपके .bashrc फ़ाइल में रखा जाने वाला कोड:

# Simple bashrc method to launch anything in terminal from any directory

YOURCOMMAND () {
  cd /path/to/directory/containing/your/script/ && ./YOURSCRIPT
}

जैसा कि आप देख सकते हैं, पहले आप सरल 'सीडी' कमांड का उपयोग करते हैं और इसे स्क्रिप्ट स्थान की निर्देशिका देते हैं, फिर '&&' का उपयोग करते हैं ताकि आप अगले कमांड को सही समय के बाद निष्पादित कर सकें, और अंत में अपनी स्क्रिप्ट खोलें जैसे कि आप करेंगे सामान्य रूप से! सुपर आसान और अपने .bash फ़ाइल में सही बचाया! :)

आशा है कि मैंने किसी की मदद की है!

निष्ठा से,

AnonymousX


यह बहुत अच्छा है ... और यह मेरे zsh को स्वतः पूर्ण करने की अनुमति देता है!
मिलन

लेकिन अगर आपके पास अलग स्क्रिप्ट है?
पाउलो सर्जियो श्लॉग

2

बैश शेल का उपयोग करने पर, उस स्क्रिप्ट को फ़ंक्शन के रूप में लिखें और फिर इसे .bashrc या स्रोत फ़ाइल में रखें, जिसमें "स्रोत file_name" द्वारा उस फ़ंक्शन को रखा गया हो।

अब शेल में फ़ंक्शन कॉल द्वारा स्क्रिप्ट निष्पादित करें।


1

या तो इसे /usr/bin(या किसी अन्य निर्देशिका में मौजूद PATH) में सहेजना या PATHउस निर्देशिका को शामिल करने के लिए संपादन करना, जिसे आपने मूल रूप से किसी भी निर्देशिका में चलाया है।


7
/usr/binOS अपग्रेड के दौरान पूरी तरह से खाली किया जा सकता है और बदल दिया जा सकता है, जिससे आपकी स्क्रिप्ट रहस्यमय तरीके से गायब हो जाती है। /usr/local/binइस प्रयोजन के लिए, जैसा कि ब्रायन ओकले ने उल्लेख किया है। यह भी देखें फ़ाइल-सिस्टम अनुक्रम स्टैंडर्ड
स्टीफन पी

0

'script.sh' "mv [script.sh] / usr / local / bin" की कार्यशील निर्देशिका से (परीक्षण नहीं किया गया है लेकिन यह कम से कम जटिल तरीका IMO लगता है।)


1
आपको संभवतः आवश्यकता होगी sudo mv script.sh /usr/local/bin, क्योंकि निर्देशिका विशेषाधिकार बढ़ाने के बिना योग्य नहीं है।
पेरेट

-2

आपको इसे अपनी मशीन पर वैश्विक निष्पादन योग्य निर्देशिका में रखना चाहिए। मुझे लगता है कि यह आमतौर /usr/binपर यूनिक्स-आधारित ऑपरेटिंग सिस्टम पर होगा (यह हालांकि उस मशीन पर सुपर उपयोगकर्ता विशेषाधिकारों की सबसे अधिक आवश्यकता होगी)।

आप इसे किसी अन्य निर्देशिका में भी रख सकते हैं जो $PATHपर्यावरण चर में है, हालांकि यह केवल उन उपयोगकर्ताओं के लिए काम करेगा जिनके पास उस चर में वह निर्देशिका है।

आप शेल में $PATHटाइप करके इसका मूल्य echo $PATHजान सकते हैं। निर्देशिका द्वारा अलग कर रहे हैं :


9
मैं नीचे जा रहा हूँ क्योंकि / usr / bin गलत उत्तर है। / usr / स्थानीय / बिन विशेष रूप से "स्थानीय" लिपियों के लिए डिज़ाइन किया गया है (यानी: जिन्हें आप सिस्टम के साथ आने वाले लोगों के बजाय बनाते हैं)।
ब्रायन ओकले
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.