2012-02-06 13 views
52

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

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

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

+10

मैं 'सुझाव है आदमी hier'। –

+4

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

+0

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

उत्तर

67

/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 जो यह करते हैं - और बहुत कुछ - आपके लिए दृश्यों के पीछे।)

+2

मैक उपयोगकर्ताओं के लिए एक टिप के रूप में: यदि आप '~/bin' चुनते हैं और यह निर्देशिका नहीं चाहते हैं तो मैं खोजक को खोजूं, आप इसे [SETFILE (1)] (https://developer.apple) के साथ अदृश्य बना सकते हैं। कॉम/लाइब्रेरी/मैक/प्रलेखन/डार्विन/संदर्भ/मैनपेज/मैन 1/सेटफाइल .1.html): फिर से दृश्यमान बनाने के लिए अदृश्य और इटफाइल -एवी ~/बिन बनाने के लिए हैटफाइल-ए वी ~/बिन। ध्यान दें कि इसके लिए [एक्सकोड टूल्स] (https://developer.apple.com/xcode/) की आवश्यकता है। – Henrik

+0

धन्यवाद। सुडौर्स के लिए sbin भी याद रखें। – erm3nda

+0

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

-9

खैर मैं ~/bin (रूट जब तक मैं नहीं कर रहा हूँ) का प्रयोग करेंगे, लेकिन $PATH के बारे में आप हमेशा

export PATH=".:${PATH}" 
# or 
export PATH="${PATH}:." 

इस तरह वास्तविक कार्यशील निर्देशिका हमेशा अपने $PATH में हो जाएगा कर सकते हैं। हालांकि इसमें कुछ सुरक्षा समस्याएं हैं ... विशेष रूप से डाउनलोड की गई स्क्रिप्ट के साथ।

+4

पर पाया जा सकता है ऐसा नहीं करना चाहिए, यह एक बड़ा सुरक्षा जोखिम बन गया है। इसके अलावा, आपका क्या मतलब है "हर निर्देशिका आपके' $ पाथ 'में होगी "? –

+0

मैं सहमत हूं। इसे आपके आदेश के लिए सभी निर्देशिकाओं को खोजना होगा और आप उस चीज़ को निष्पादित करना समाप्त कर सकते हैं जिसे आप नहीं चाहते थे, आदि – CoffeeRain

+0

आप दोनों सही हैं, मैंने अपना जवाब संपादित किया था। –

16

यह यूनिक्स स्वाद के आधार पर थोड़ा भिन्न हो सकता है। मैं यहां लिनक्स मान रहा हूं (हालांकि यह ओएसएक्स पर लागू हो सकता है)। Filesystem Hierarchy Standard (FHS) (Linux Standard Base working group से प्राप्त लिंक) के अनुसार:

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

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

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

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

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

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

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

[...]

निर्देशिका/opt/बिन,/opt/doc,/opt/शामिल/opt/जानकारी,/opt/lib, और/opt/आदमी स्थानीय के लिए आरक्षित हैं सिस्टम प्रशासक का उपयोग करें। पैकेज स्थानीय सिस्टम एडमिनिस्ट्रेटर, द्वारा इन आरक्षित निर्देशिकाओं में इन "आरक्षित निर्देशिकाओं को जोड़ने या प्रतिलिपि करके)" फ्रंट-एंड "फ़ाइलों को प्रदान कर सकता है, लेकिन इन आरक्षित निर्देशिकाओं की अनुपस्थिति में सामान्य रूप से कार्य करना चाहिए।

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

संबंधित मुद्दे