मुझे अपनी बैश स्क्रिप्ट कहां रखनी चाहिए


15

मेरे पास कुछ बहुत ही सरल बैश स्क्रिप्ट हैं जिन्हें मैंने उन चीजों के लिए एक साथ सिल दिया था जो मैं नियमित रूप से करता हूं। उनमें से एक मेरे बैकअप कार्यों को करने के लिए डुप्लिकेट चलाने के लिए है। कुछ भी नहीं चतुर सिर्फ अगर का एक गुच्छा .. तो सच में बयान। जैसा कि इसे सुडो के रूप में चलाने की आवश्यकता है, यह मेरी स्क्रिप्ट को / usr / bin (या अन्य स्थान पर PATH) में डालने के लिए सबसे अच्छा अभ्यास होगा, root.root और chmod से 700 तक?


मैं कहूंगा कि gitअपनी स्क्रिप्ट को संस्करण-नियंत्रित करने के लिए उपयोग करें, git repos की स्थानीय प्रतियों को आप कहीं भी पसंद करें ~, और फिर स्क्रिप्ट को सिमिलिंक करें ~/bin
edwinksl

आप बादलों के gitरूप में मतलब githubहै?
WinEunuuchs2Unix

2
@ WinEunuuchs2Unix यदि आप चाहते हैं कि आपकी स्क्रिप्ट अन्य उपयोगकर्ताओं के लिए उपलब्ध हो, तो आपको उन्हें अंदर रखना चाहिए /usr/local/bin। अन्यथा, मैं कहूंगा कि उन्हें अभी अंदर डाल दें ~/bin। जब आप नवीनीकरण करते हैं, तो दोनों निर्देशिकाओं में आपकी अपनी स्क्रिप्ट सुरक्षित होनी चाहिए।
edwinksl

2
ऊपर के रूप में, उन्हें / usr / स्थानीय / बिन में रखें। बस यह सुनिश्चित कर लें कि आपके लिपि के नाम अद्वितीय हैं और मौजूदा लिनक्स कमांड / बाइनरी नाम नहीं है। अपने आप को मैं किसी भी स्क्रिप्ट के अंत में एक नंबर जोड़ देता हूं, जैसा कि मैंने देखा है कि किसी भी संख्या में पहले से मौजूद लिनक्स नामों को समाप्त नहीं देखा है। (कुछ सच में अस्पष्ट लोगों को कहने के लिए नहीं ...
doug

1
@edwinksl लगभग एक साल बाद मुझे कहना ~/binहै कि अधिकांश लिपियों के लिए सबसे अच्छी जगह है क्योंकि आपको sudoउन्हें संपादित करने के लिए उपयोग करने की आवश्यकता नहीं है जब आप उन्हें संग्रहीत करते हैं /usr/local/bin
विनयुनुच्स

जवाबों:


3

मैं अपनी स्वयं की स्क्रिप्ट सहेजता हूं /opt/scripts

यदि आपकी स्क्रिप्ट को प्रत्येक सिस्टम उपयोगकर्ता द्वारा निष्पादन योग्य होना चाहिए, तो आप एक प्रतीकात्मक लिंक बना सकते हैं /usr/bin

यदि केवल रूट को स्क्रिप्ट निष्पादित करनी चाहिए, तो आप एक प्रतीकात्मक लिंक बना सकते हैं /usr/sbin

एक प्रतीकात्मक लिंक जोड़ने की आज्ञा /usr/bin/:

ln -s /opt/scripts/<script> /usr/bin/

आप स्क्रिप्ट निष्पादित कर सकते हैं, क्योंकि डिफ़ॉल्ट रूप से /usr/bin/आपके पेट में है।


1
मैं अनुशंसा करूंगा कि /usr/binउपयोगकर्ता / स्थानीय शेल स्क्रिप्ट के लिए लक्ष्य के रूप में उपयोग करने के बजाय - यह फाइलसिफ़िएर हायरार्की स्टैंडर्ड के अनुसार /usr/local/bin(या /opt/bin) हो सकता है - डेबियन विकी संघर्षों से बचने के लिए (ज्यादातर समय, आप उबंटू की प्रदान की गई स्क्रिप्ट चाहते हैं)।
शालम्ब

अधिकांश सिस्टम /usr/local/binओवरराइड करते हैं /usr/bin, क्योंकि यह बाद में पथ में आता है। यह उद्देश्य पर है, क्योंकि सिस्टम वहां फाइलें नहीं डालता है, इसलिए आप वहां फाइलें रख सकते हैं, जो सिस्टम प्रदान की गई चीजों को ओवरराइड करता है।
एलो

मैंने इसे सही उत्तर के रूप में चिह्नित किया, भले ही दोनों उत्तर ठीक लगे। कारण यह है कि, मैं एफएचएस डॉक्स पर एक नज़र डालते हुए आगे बढ़ा और इस समझ के साथ कि इस विकल्प के लिए कोई विकल्प नहीं है। मुझे उन के विचार पसंद हैं, जो केवल मेरी स्क्रिप्ट्स / usr / लोकल / बिन में लिंक करने को कहते हैं। सभी बिंदुओं के लिए धन्यवाद।
हैटरमैन

17

यदि आपके अलावा कोई अन्य उपयोगकर्ता इन लिपियों का उपयोग नहीं करता है:

तब आप उन्हें अंदर रख सकते हैं /home/$USER/binbinअगर यह नहीं है तो फोल्डर बनाएं और फाइलों को वहां ले जाएं। आपके घर का बिन फ़ोल्डर स्वचालित रूप से PATH पर्यावरण चर में जुड़ जाएगा। कोड में है .profile:

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

देखें कि कैसे / घर / उपयोगकर्ता नाम / बिन को $ PATH में जोड़ें?

या कुछ प्रणालियों में यह हो सकता है .bashrc:

export PATH=${HOME}/bin/:${HOME}/.local/bin:${PATH}

धन्यवाद एल्डर गीक

यदि ये स्क्रिप्ट अन्य उपयोगकर्ताओं द्वारा उपयोग की जानी है:

तो या तो /usr/local/binया /opt/binअच्छा विकल्प हैं। देखें क्या कस्टम लिनक्स स्क्रिप्ट रखने के लिए एक मानक स्थान है?

उम्मीद है की यह मदद करेगा


3

मेरे पास एक निर्देशिका है जिसे मैं अपने स्थानीय टूल या उन चीजों के त्वरित संग्रह के लिए उपयोग करता हूं जिन्हें मैं विभिन्न कंप्यूटरों पर तैनात करता हूं /usr/local/apollo। इस निर्देशिका के लिए शाखाएँ हैं flags, binऔर logs

डिफ़ॉल्ट apt-getरिपॉजिटरी के बाहर डाउनलोड और इंस्टॉल करने /opt/वाले एप्लिकेशन के लिए और एप्लिकेशन के नाम से एक डायरेक्टरी लगाई जाती है, जिसमें एप्लिकेशन के विशिष्ट संस्करण के लिए एक और उप-निर्देशिका होती है। इस तरह की तरह एक आवेदन के संस्करण संकलित मेरी vlcया eclipseवितरित संस्करण के साथ संघर्ष नहीं होगा।

मेरा उपयोग /optइस तरह से मूल रूप से आधिकारिक तौर पर डिज़ाइन किया गया है।

वैसे निर्देशिका /usr/local/bin, /usr/local/apolloऔर /optएक नया OS संस्करण इंस्टॉलेशन ओवरराइट करने से बचे।


1
$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/binमुझे पसंद है कि तथ्य /usr/local/binपहले से ही पथ में है जो याद रखने के लिए कम है। मुझे पसंद है /opt/program/versionकि मैं आपकी विधि का उपयोग कर सकूं कि कर्नेल सामान के लिए मुझे एन्हांसियो की तरह संकलन और संकलन करना है जहां वे कर्नेल संस्करणों के बीच चीजों को बदलते हैं। क्या /apolloएक चंद्रमा व्यक्तिगत लैंडिंग है या इसका उबंटू अर्थ है?
विनयुनुच्स 2 यूनिक्स

बीच क्या अंतर है /usr/local/binऔर usr/local/sbinइस तरह के बाद उन्नयन के दौरान nuked हो जाता है?
WinEunuuchs2Unix

इंस्टॉलर उन निर्देशिकाओं को Nukes करता है जो इसका उपयोग करता है। यह आसानी से /usr/localनिर्देशिका बनाता है , लेकिन यह उनमें से किसी में कुछ भी नहीं डालता है। उन निर्देशिकाओं को उपयोगकर्ता द्वारा आबाद किया जाता है। रिपॉजिटरी के बाहर कई स्रोत कार्यक्रम उपयोगकर्ता को यह चुनने का विकल्प देते हैं कि वे कहाँ जाना चाहते हैं। डिफ़ॉल्ट फ़ाइलों में डिफ़ॉल्ट हैं /usr/local/bin। इसलिए उन निर्देशिकाओं का उपयोग करना कितना सामान्य है, वे डिफ़ॉल्ट रूप से उपयोगकर्ता के मार्ग में शामिल हैं। डिफ़ॉल्ट रूप से सिस्टम चेक करता है ~/bin और यदि यह मौजूद है तो इसे पथ में जोड़ता है।
LD जेम्स

आपका मतलब है ~/binकि इंस्टॉल या हर बूट के दौरान सिस्टम की जांच ? बीच क्या अंतर है sbinऔर bin? वे सह-अस्तित्व में प्रतीत होते हैं कि कार्यक्रम के प्रकार के आधार पर आपके द्वारा चुने गए अर्ध-नियम होने चाहिए?
विनयुनुच्स 2 यूनिक्स

1
@ WinEunuuchs2Unix ~/binपथ पर ... इसे स्थापना के दौरान जोड़ा नहीं गया है। सिस्टम हर लॉगिन पर इसके लिए जाँच करता है और लॉगिन के दौरान मौजूद होने पर इसे $ PATH में जोड़ता है। अपनी ~/.profileसेटिंग की अंतिम दो पंक्तियों को देखें ।
LD जेम्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.