कस्टम निष्पादनयोग्य या स्क्रिप्ट डालने के लिए यूनिक्स मानक निर्देशिका? [बन्द है]


79

यदि मेरे पास कोई कस्टम शेल स्क्रिप्ट या प्रोग्राम है, जिसे मैंने खुद बनाया है या वेब से डाउनलोड किया है, और मैं इसे CLI से निष्पादित करना चाहता हूं, तो क्या लिनक्स / यूनिक्स निर्देशिका संरचना में इसे रखने के लिए मानक स्थान है?

/usr/bin ?
/usr/local/bin ?
/usr/lib ?
/usr/sbin ?
/bin ?
/sbin ?
/var ?

मैं आमतौर पर इसे अपने ~ / बिन फ़ोल्डर के नीचे रखता हूं और इसे पेट में डालता हूं, लेकिन यह साफ नहीं लगता है। और हर बार मैंने एक नया कार्यक्रम डाउनलोड किया, मुझे इसे फिर से पेटीएम में डालना होगा।


17
मैं सुझाव देता हूं man hier
ग्रेग हेविल

4
यदि आपका ~ / बिन पथ पर है, तो आप ~ / बिन में रखे गए सभी कार्यक्रम भी आपके पथ पर होने चाहिए ... इसका क्या मतलब है कि आपको इसे फिर से पथ पर रखना होगा?
tpg2114

मैं @ tpg2114 से सहमत हूं, ~/binआपके उपयोगकर्ता-स्वामित्व वाले शेल स्क्रिप्ट के लिए एक अच्छा स्थान है।
निकल्स बी।

मैंने कार्यक्रमों को एक और सबफ़ोल्डर के अंदर रखा: ~ / bin / xyz, ~ / bin / abc। इसलिए मुझे उनमें से हर एक को PATH में डालना होगा।
अत्जाजा

1
आपको वही करना होगा जहां आप इसे डालते हैं। यदि आप / usr / bin / xyz डालते हैं, तो आपको उस पथ को भी जोड़ना होगा।
tpg2114

जवाबों:


87

/usr/local/binइस उद्देश्य के लिए सिस्टम-वाइड इंस्टॉलेशन के लिए सटीक रूप से मौजूद है। आपके अपने निजी उपयोग के लिए, ~/binवास्तविक मानक है।

यदि आप प्रत्येक बाइनरी को अपनी उपनिर्देशिका में रखना चाहते हैं, तो आप ऐसा कर सकते हैं, और अपने पहले से ही एक निर्देशिका में एक सिमिलिंक जोड़ सकते हैं PATH। इसलिए, उदाहरण के लिए

curl -o $HOME/downloads/fnord http://fnord.example.com/script.exe
ln -s $HOME/downloads/fnord $HOME/bin/

प्रदान की $HOME/binअपने में है PATH। (ऐसे उपकरण हैं stowजो ऐसा करते हैं - और भी बहुत कुछ - आपके लिए पर्दे के पीछे।)


3
मैक उपयोगकर्ताओं के लिए एक टिप के रूप में: यदि आप ´ ~ / bin don't चुनते हैं और नहीं चाहते हैं कि यह निर्देशिका i Finder को दिखाए, तो आप इसे SETFILE (1) के साथ अदृश्य बना सकते हैं : fsetfile -a V ~ / bin making बनाने के लिए फिर से दिखाई देने के लिए अदृश्य और isiblesetfile -av ~ / bin making। ध्यान दें कि इसके लिए Xcode टूल की आवश्यकता है ।
हेनरिक

धन्यवाद। सूडरों के लिए साइबिन भी याद रखें।
193

@tripleee: क्या स्क्रिप्ट (बैश, पर्ल, आदि) के लिए एक वास्तविक मानक निर्देशिका है? मैं जैसे सोच रहा हूँ ~ / etc? मुद्दा यह है कि आप cvs के साथ बैकअप / ट्रैक नहीं करते हैं .. उसी तरह स्क्रिप्ट और बायनेरी।
phs

2
@ एफएस binनिष्पादनयोग्य, स्क्रिप्ट या उचित बायनेरिज़ के सभी प्रकार के लिए है। यदि आप उन्हें सीधे संस्करण नियंत्रण में चाहते हैं, तो अपने सभी को binसंस्करण नियंत्रण में रखना निश्चित रूप से एक विकल्प है; हालांकि अधिक सामान्यतः, आपके पास प्रत्येक के लिए एक अलग परियोजना है, या कम से कम प्रत्येक अलग समूह है। जब आप एक नया संस्करण जारी करते हैं, तो इसे अपने आप में स्थापित करें bin। या यदि आप कुत्ते के भोजन के बारे में गंभीर हैं और / या आपके जीवन में बहुत कम आश्चर्य है, तो अपने विकास संस्करण में एक सिमलिंक डालें bin
ट्रिपल

धन्यवाद, मैंने बेहतर निष्पादन
योग्यताओं पर

17

यह यूनिक्स स्वाद के आधार पर थोड़ा भिन्न हो सकता है। मैं यहाँ लिनक्स मान रहा हूँ (हालाँकि यह OSX पर लागू हो सकता है)। फ़ाइलसिस्टम पदानुक्रम मानक (FHS) ( लिनक्स स्टैंडर्ड बेस वर्किंग ग्रुप से प्राप्त लिंक के अनुसार )

/usr/localपदानुक्रम सिस्टम व्यवस्थापक जब सॉफ्टवेयर स्थानीय स्तर पर स्थापित करने के द्वारा उपयोग के लिए है। सिस्टम सॉफ्टवेयर के अपडेट होने पर इसे अधिलेखित होने से सुरक्षित होना चाहिए। इसका उपयोग उन कार्यक्रमों और डेटा के लिए किया जा सकता है जो होस्ट के समूह के बीच साझा करने योग्य हैं, लेकिन इसमें नहीं पाए जाते हैं /usr

स्थानीय स्तर पर स्थापित सॉफ्टवेयर के भीतर रखा जाना चाहिए /usr/localबजाय /usrजब तक यह बदलने के लिए या में सॉफ्टवेयर को अपग्रेड करने के लिए स्थापित किया जा रहा है /usr

/usr/local/bin अक्सर डिफ़ॉल्ट रूप से पथ पर होता है।

ध्यान दें कि आप केवल में इसे करने के लिए निष्पादन योग्य या एक लिंक रखना चाहिए /usr/local/bin, बाकी हिस्सों में जाने के लिए हो सकता है /usr/local/libया /usr/local/share

/optपेड़ भी समझदार हो सकता है:

/opt ऐड-ऑन एप्लिकेशन सॉफ़्टवेयर पैकेजों की स्थापना के लिए आरक्षित है।

/ ऑप्ट में स्थापित किए जाने वाले पैकेज को अपनी स्थिर फ़ाइलों को एक अलग /opt/<package>या /opt/<provider>निर्देशिका ट्री में ढूंढना चाहिए , जहां <package>एक नाम है जो सॉफ़्टवेयर पैकेज का वर्णन करता <provider>है और प्रदाता का LANANA पंजीकृत नाम है।

[...]

निर्देशिका / ऑप्ट / बिन, / ऑप्ट / डॉक्टर, / ऑप्ट / शामिल, / ऑप्ट / जानकारी, / ऑप्ट / लीबी, और / ऑप्ट / मैन स्थानीय सिस्टम व्यवस्थापक उपयोग के लिए आरक्षित हैं। पैकेज स्थानीय सिस्टम व्यवस्थापक द्वारा इन आरक्षित निर्देशिकाओं में (लिंक करके या कॉपी करके) रखा जा सकता है, लेकिन इन आरक्षित निर्देशिकाओं के अभाव में सामान्य रूप से कार्य करना चाहिए।

(आप से अपने खुद के लिंक कर सकता है /opt/your-package/bin/executableमें /opt/bin, और डाल /opt/binपर PATHअगर यह पहले से ही वहाँ नहीं है।)

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