कस्टम बैश स्क्रिप्ट स्थापित करने के लिए एक अच्छी स्थायी जगह कहाँ है?


32

मैं "लेनिंगन" स्थापित करने वाला हूं जो क्लोजर प्रोग्रामिंग लैंग्वेज के लिए बहुत उपयोगी होने के साथ बैश स्क्रिप्ट है ... ... लेकिन मुझे यकीन नहीं है कि यह कहां से करना उचित है- लिनक्स में एक निष्पादन योग्य स्क्रिप्ट प्रणाली ताकि यह स्थायी रूप से और स्थिर-उपलब्ध हो।

मुझे नहीं लगता कि कहीं भी / घर में समझदारी है, लेकिन मुझे नहीं पता कि इसके लिए कौन सी निर्देशिका / निर्देशिका का उपयोग किया जाना चाहिए।

/ Usr / share?


जवाबों:


45

(नोट: इस पोस्ट के ~रूप /home/userमें अनुवाद )

व्यक्तिगत रूप से, मैंने अपनी सभी कस्टम-निर्मित सिस्टम स्क्रिप्ट्स /usr/local/binऔर मेरे सभी व्यक्तिगत बैश स्क्रिप्ट्स को अंदर डाल दिया ~/bin। बहुत कम कार्यक्रम मैं खुद को /usr/local/binनिर्देशिका में स्थापित करता हूं इसलिए यह बहुत अव्यवस्थित नहीं है और यह $PATHमेरी अधिकांश मशीनों में पहले से ही चर में था ।

/usr/local/binअपने सिस्टम पथ में जोड़ने के लिए (यदि यह पहले से नहीं है) इसे इसमें जोड़ें /etc/profile:

PATH=$PATH:/usr/local/bin
export PATH

को जोड़ने के लिए ~/binअपने उपयोगकर्ता के पथ को जोड़ने ~/.bash_profile:

PATH=$PATH:$HOME/bin
export PATH

कभी-कभी डिफॉल्ट .bash_profileफाइल में एक स्टेटमेंट होगा जो अपने आप मौजूद ~/binहोने पर अपने आप जुड़ जाता $PATHहै, इसलिए यह बनाएं ~/binऔर यह देखने के लिए एक नया टर्मिनल खोलें कि क्या आपका पहले से ही ऐसा है।


बीएसडी डिफ़ॉल्ट रूप से ऐसा करते हैं।
क्रिस एस

@ क्रिस: बीएसडीएस / usr / लोकल / बिन में बहुत सारा सामान डालते हैं
Dan Andreatta

आपकी बैश स्क्रिप्ट और सिस्टम स्क्रिप्ट में क्या अंतर है, और क्या आप दोनों को अलग करने का कोई कारण है?
हाशिम

@ हाशिम मैं निश्चित रूप से ट्रे के लिए बात नहीं कर सकता, लेकिन आपके द्वारा अपनी व्यक्तिगत आवश्यकताओं के लिए विकसित किए गए उपकरण सिस्टम टूल में "स्नातक" होते हैं जब आप नोटिस करते हैं कि वे एक समस्या को हल करते हैं जो दूसरों के साथ संघर्ष कर रहे हैं, या आपके पास एक और सिस्टम-वाइड इंस्टॉल है जो निर्भर करता है इनमें से एक उपकरण पर। मुझे लगता है कि सिस्टम-वाइड को स्थापित करने की दहलीज पर अधिकांश प्रोग्रामर के लिए उच्च है। इसके अलावा, आपके द्वारा साझा किए जाने वाले उपकरण में प्रलेखन आदि की आवश्यकता होती है, जो कई डेवलपर्स शायद ही कभी लिखते हैं।
ट्रिपल

एक तरफ के रूप में, exportकई बार एक चर की आवश्यकता नहीं होती है (और शायद आपका सिस्टम पहले से ही PATHनिर्यात के लिए चिह्नित है, इसलिए आपको इसे स्वयं करने की आवश्यकता नहीं है)।
ट्रिपल

9

/ usr / स्थानीय / वास्तव में सही जगह है, जबकि / ऑप्ट वास्तव में तीसरे पक्ष के अनुप्रयोगों के लिए है; "" ऐड-ऑन एप्लिकेशन सॉफ्टवेयर पैकेजों की स्थापना के लिए ऑप्ट आरक्षित है। " यह फाइलसिस्टम पदानुक्रम मानक का हिस्सा है।

/ ऑप्ट पर चर्चा के लिए http://www.pathname.com/fhs/pub/fhs-2.3.html देखें ।

/ Usr / स्थानीय / के लिए, यह "सिस्टम एडमिनिस्ट्रेटर द्वारा उपयोग" के लिए है। बस वहाँ सामान के बारे में मत भूलना - यह दस्तावेज़।


आपके द्वारा प्रदान किया गया लिंक "निर्देशिका / ऑप्ट / बिन, / ऑप्ट / डॉक्टर, / ऑप्ट / शामिल, / ऑप्ट / जानकारी, / ऑप्ट / लिबर, और / ऑप्ट / मैन स्थानीय सिस्टम व्यवस्थापक उपयोग के लिए आरक्षित है।" / Usr / स्थानीय के बारे में कुछ भी नहीं है। केवल / usr / स्थानीय / शेयर का उल्लेख किया गया है। दूसरी ओर, संकलित कार्यक्रमों को आमतौर पर लिनक्स में / usr / स्थानीय में स्थापित किया जाता है। क्या आपको नहीं लगता / ऑप्ट / बिन सिस्टम प्रशासक द्वारा उपयोग के लिए बेहतर जगह है?
raacer

1
@रासर मेरा अनुभव यह है कि /usr/local- जैसा कि नाम का तात्पर्य है - स्थानीय प्रशासन के लिए, और /optउन चीजों के लिए जो आधिकारिक तौर पर वितरित नहीं की जाती हैं, जैसे वाणिज्यिक तृतीय-पक्ष सॉफ़्टवेयर जो एक समान प्रक्रिया द्वारा प्रबंधित किया जाता है (अपग्रेड से बदला या मिटाया जा सकता है) अपस्ट्रीम) लेकिन डिस्ट्रो के पैकेज मैनेजर द्वारा प्रबंधित नहीं किया गया है, या शायद वास्तव में आरपीएम या .debपैकेज के रूप में वितरित किया गया है, लेकिन सभी डिस्ट्रो की नीतियों और सम्मेलनों के पालन में संगठित और पैक नहीं किया गया है।
ट्रिपल जू

1
@raacer /usr/localदस्तावेज़ में बाद में पूरी तरह से एक अलग सेक्शन है ।
ट्रिपल जू

@ स्ट्रैसर ट्रिपल सही है। यहाँ लिंक है: pathname.com/fhs/pub/… .. सही, संकलित कार्यक्रम (आमतौर पर खुला स्रोत) जो उस सिस्टम के लिए विशेष रूप से संकलित / निर्मित किए गए हैं या कई प्रणालियों के बीच साझा किए गए हैं (लेकिन सामान्य ओएस पैकेजिंग / वितरण का हिस्सा नहीं है,) लेकिन जो साझा देयताओं पर बहुत अधिक भरोसा करते हैं) को / usr / स्थानीय (मूल रूप से / usr के पदानुक्रम को प्रतिबिंबित करता है) में स्थापित किया जाना चाहिए। थर्ड पार्टी सॉफ्टवेयर जो संभवतः अपने स्वयं के पुस्तकालय समर्थन (यानी, फ़ायरफ़ॉक्स, उपयोगकर्ता) के साथ एक अलग सिस्टम पर संकलित किए जाते हैं / ऑप्ट में जाना चाहिए।
जैमिसन बेकर

3

ऐतिहासिक रूप से आप कुछ पसंद / उपयोग करेंगे। जब तक यह माना जाता है कि उपयोगकर्ताओं के लिए $ PATH में अपडेट किया जाता है तब तक कुछ भी ठीक है (इसलिए / घर में कुछ भी एक बुरा विचार है)।


2

/usr/share/clojureक्लोजर के बायनेरीज़ और लाइब्रेरीज़ को रखने के लिए एक आम जगह की तरह लगता है - मुझे क्यों नहीं पता, यह एक स्वाभाविक लगता है /usr/local/share/clojure- इसलिए siteइन बैश स्क्रिप्ट के लिए इसके तहत एक उपनिर्देशिका बनाना ठीक लगता है।

सामान्य बिंदु यह है कि यह फ़ंक्शन द्वारा स्क्रिप्ट को व्यवस्थित करने के लिए अधिक समझ में आता है, एक ही स्थान पर सभी बैश स्क्रिप्ट नहीं है।


1
इसके /usr/shareलिए उपयोग करने में कुछ समस्याएं हैं । सबसे पहले shareइसका मतलब है आर्किटेक्चर इंडिपेंडेंट फाइल्स (यानी आर्किटेक्चर में शेयर की गई)। उस कारण से लाइब्रेरी और एक्जीक्यूटिव एक shareडायरेक्टरी के अंतर्गत नहीं आते हैं । दूसरी बात यह /usr/localहै कि वितरण पैकेज प्रबंधक के अलावा और कुछ नहीं छोड़कर जाना चाहिए /usr
कास्परैड

2

/usr/local, मेरा मानना ​​है कि "स्थानीय" के अर्थ के लिए कुछ भ्रम है।

जैसा कि मैं इसे समझता हूं, "स्थानीय" का अर्थ "स्थानीय मशीन से / पर उत्पन्न होना" नहीं है, लेकिन अधिक सरलता से, "स्थानीय मशीन के लिए विशिष्ट", जो स्थानीय मशीन से / पर उत्पन्न हो सकता है या नहीं।

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