/ usr / bin vs / usr / स्थानीय / लिनक्स पर बिन


445

लिनक्स में बाइनरी डालने के लिए बहुत सारे स्थान क्यों हैं? कम से कम ये पाँच हैं:

  1. /bin/
  2. /sbin/
  3. /usr/bin/
  4. /usr/local/bin/
  5. /usr/local/sbin/

और मेरे कार्यालय बॉक्स पर, मेरे पास इनमें से कुछ के लिए अनुमति नहीं है।

बाइनरी किस प्रकार के इन binएस में जाता है ?


28
तुम भूल गए /usr/sbin/
हैलो'१

15
और ~/bin/व्यक्तिगत सामान के लिए।
कैलेमरियस

1
आजकल कम स्थान हैं, चूंकि /binविलय कर दिया गया था /usr/binऔर /sbinइसके साथ विलय कर दिया गया था /usr/sbin- The Case for / usr मर्ज देखें
पायोत्र डोब्रोगोस्ट


@ कलाम, क्या? क्या आपको उपयोग नहीं करना चाहिए /usr/local/bin?
6

जवाबों:


558
  1. /bin(और /sbin) ऐसे कार्यक्रमों के लिए अभिप्रेत थे /जिन्हें बड़े से पहले एक छोटे से विभाजन पर होने की आवश्यकता थी /usr, आदि विभाजन माउंट किए गए थे। इन दिनों, यह ज्यादातर प्रमुख कार्यक्रमों के लिए एक मानक स्थान के रूप में कार्य करता है /bin/sh, हालांकि मूल इरादे अभी भी छोटे एम्बेडेड उपकरणों पर उदाहरण के लिए प्रासंगिक हो सकते हैं।

  2. /sbin, जैसा कि अलग-अलग है /bin, सिस्टम प्रबंधन कार्यक्रमों के लिए है (सामान्य रूप से सामान्य उपयोगकर्ताओं द्वारा उपयोग नहीं किया जाता है) /usrमाउंट होने से पहले आवश्यक है।

  3. /usr/bin वितरण-प्रबंधित सामान्य उपयोगकर्ता कार्यक्रमों के लिए है।

  4. वहाँ एक है /usr/sbinके लिए एक ही रिश्ते के साथ /usr/binके रूप में /sbinकिया है /bin

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

  6. /usr/local/sbin, जैसा कि आप शायद इस बिंदु पर अनुमान लगा सकते हैं, के /usr/local/binरूप में /usr/sbinहै /usr/bin

इसके अलावा, वहाँ भी है /optजो अखंड गैर-वितरण पैकेज के लिए है, हालांकि इससे पहले कि वे ठीक से एकीकृत थे विभिन्न वितरणों ने ग्नोम और केडीई को वहां रखा। आम तौर पर आपको इसे बड़े, खराब व्यवहार वाले थर्ड पार्टी पैकेज जैसे ओरेकल के लिए आरक्षित करना चाहिए।


37
मुझे लगता है कि यह उत्तर सम्मेलनों के एक सामान्य सेट को स्पष्ट करने का एक बड़ा काम करता है, लेकिन रोब लैंडली का यह पोस्ट वास्तव में बहुत अच्छा पढ़ा गया है यदि आप बकवास में अंतर्दृष्टि चाहते हैं ... lists.busybox.net/pipermail/busybox.inDDeill / ० /४१'४.html
सबफ्यूज़न १३'१२

3
विहित वर्तमान संदर्भ के लिए refspecs.linuxfoundation.org/fhs.shtml @Kojiro द्वारा लिंक पुराना है और इसमें नई युक्ति नहीं है।
डिडिएर ए।

2
मैं इंटरनेट से डाउनलोड किया गया बिन कहां रख सकता हूं? आपके विवरण से ऐसा लगता है कि इसे / usr / स्थानीय / बिन या / usr / बिन में जाना चाहिए। क्या / usr / bin कुछ ऐसा है जिसे मुझे मैन्युअल रूप से स्पर्श नहीं करना चाहिए, और केवल पैकेज प्रबंधक के साथ खेलना चाहिए?
डिडियर ए

3
@DidierA। इसे डालें ~/binऔर उस निर्देशिका को एक उपयोगकर्ता के रूप में अपने पेटीएम में जोड़ें ... नोट के लिए धन्यवाद, मैंने अपनी गंभीर रूप से पुरानी टिप्पणी को हटा दिया।
कोजीरो

3
मुझे अपने प्रश्न के पहले भाग का उत्तर यहाँ मिला: superuser.com/a/238993/425838 । सिस्टम PATHचर में वरीयता क्रम पर आधारित है , और echo $PATHमेरे लिए शो /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games, जिसका अर्थ है कि निष्पादन में /usr/local/binउन लोगों /usr/binपर पूर्वता लेना जिसमें लोगों में पूर्वता लेना /bin
गेब्रियल स्टेपल्स

65

मैं फ़ाइल सिस्टम पदानुक्रम मैन पेज पर एक नज़र डालने की सलाह देता हूं:

man hier

जो ऑनलाइन भी उपलब्ध है, उदाहरण के लिए: http://linux.die.net/man/7/hier


1
यह उपयोगकर्ता के प्रश्न का उत्तर नहीं देता है।
बिली ओनेल

14
मैन पेज में प्रत्येक बिन निर्देशिका के लिए एक प्रविष्टि होती है, जो यह बताती है कि उनमें क्या जाता है, जो कि एक प्रश्न था।
डेविटेनियो

34

फ़ाइल-सिस्टम अनुक्रम स्टैंडर्ड विकिपीडिया में प्रवेश मुझे एक ही सवाल का जवाब जब मैं यह था की मदद की है, साथ ही यह एक बहुत ही व्याख्यात्मक टेबल है।

उस पृष्ठ से अंश 1 :

/bin        Essential command binaries that need to be available in single user mode; for all users, e.g., cat, ls, cp.
/usr/bin    Non-essential command binaries (not needed in single user mode); for all users.
/usr/local  Tertiary hierarchy for local data, specific to this host. Typically has further subdirectories, e.g., bin, lib, share
/usr/sbin   Non-essential system binaries, e.g., daemons for various network-services.
/sbin       Essential system binaries, e.g., fsck, init, route.

1 19 जून 2019 को लिया गया; पर्मलिंक


17

sbinनिर्देशिका प्रोग्राम जो आम तौर पर केवल सिस्टम प्रशासन होते हैं। नियमित उपयोगकर्ताओं के लिए कार्यक्रम उन में कभी नहीं जाना चाहिए।

स्टार्टअप के दौरान कुछ कार्यक्रमों की आवश्यकता होती है, और अंत में /bin/या में /sbin/। फ़ाइल सिस्टम आरोहित होने से पहले ये उपलब्ध होने चाहिए। चीजों की तरह mount, और fsckहै कि जाँच और फ़ाइलों सिस्टम होना चाहिए माउंट करने के लिए आवश्यक हैं।

अधिकांश पैक कार्यक्रमों में अंत /usr/bin/और /usr/sbin/। ये रूट फ़ाइल सिस्टम के अलावा किसी फ़ाइल सिस्टम पर हो सकते हैं। कुछ मामलों में वे एक नेटवर्क माउंटेड ड्राइव पर हो सकते हैं।

स्थानीय कार्यक्रमों और लिपियों में हैं /usr/local/bin/और /usr/local/sbin/। यह उन्हें स्पष्ट रूप से गैर-मानक के रूप में पहचानता है, और संभवतः केवल साइट पर उपलब्ध है।

आगे की व्याख्या के लिए कमांड चलाने की कोशिश करें man hierजो आपके वितरण के लिए अनुशंसित फ़ाइल सिस्टम पदानुक्रम का विवरण प्रदान करे। आप विकिपीडिया पर फ़ाइल सिस्टम पदानुक्रम के बारे में भी पढ़ना चाह सकते हैं


1
+1 यदि शीर्ष थोड़ा बहुत है तो वास्तव में संक्षिप्त विवरण।
CppLearner

"स्थानीय कार्यक्रम और स्क्रिप्ट / usr / स्थानीय / बिन / और / usr / स्थानीय / sbin /" से संबंधित हैं - आप स्थानीय कार्यक्रमों का मतलब "ओएस के सभी भाग में नहीं" हैं, लेकिन मैंने उन्हें स्थापित करने का फैसला किया है और उनका उपयोग करना चाहते हैं "?
जिम अहो

11

1970 के दशक में, UNIXसभी आधिकारिक निष्पादक थे /binऔर /usr/binउपयोगकर्ताओं के घर निर्देशिकाओं (जैसे /usr/dmr) के नीचे एक स्थान था, जो कि किसी भी उपयोगकर्ता के लिए स्वयं के बायनेरी स्टोर करने के लिए उपलब्ध था जो कि दूसरों के लिए भी रुचि हो सकती थी।

इस खुले का परिणाम /usr/binगैर-दस्तावेजी सॉफ्टवेयर का एक कबाड़ यार्ड था और इसलिए Stephen Bourneएक ने लिखा है cron scriptहर रात नए बाइनरी के लिए जाँच की है कि और सभी बाइनरी कि एक प्रलेखन नहीं था या कि रूप में अच्छी तरह अपनी दस्तावेज़ीकरण अपडेट किए बिना अपडेट किए गए हैं हटा दिया।

1970 के दशक के अंत /usr/binमें, ओएस बेस वितरण में एकीकृत किया गया था और लोगों ने /usr/local/binपिछले खुले के उद्देश्य के लिए उपयोग करना शुरू कर दिया था /usr/bin

थोड़ी देर के बाद, sysadmins सॉफ़्टवेयर /usr/local/binको संग्रहीत non-localकरता था जो कि नेटवर्क से आयात किया गया था (जैसे USENET) और जैसा कि UNIX कंपनियां फिर से उसी गलती को दोहराना पसंद नहीं करती थीं /usr/bin, 1987 के आसपास एक फ़ाइल सिस्टम पदानुक्रम सम्मेलन था जहाँ UNIX कंपनियां सहमत थीं इसके बजाय छोड़ देना /usr/local/binऔर उपयोग /opt/<vendor>/binकरना।

दुर्भाग्य से, लिनक्स डिस्ट्रोस ने इस निर्णय का पालन नहीं किया ...।


बहुत दिलचस्प है, लेकिन इनमें से कोई भी उस सवाल का जवाब देने की कोशिश नहीं करता है जो /optयूनिक्स के बारे में नहीं बल्कि लिनक्स के बारे में था। यह जवाब देने जैसा है "कारों में 4 पहिए क्यों होते हैं?" "साइकिलें 2 के साथ हैं! दुख की बात है कि कारें नहीं हैं।" ओपी मदद नहीं करता है जो समझ में क्यों कारों 4. है
terdon

2
यदि आप लिनक्स की पृष्ठभूमि के स्पष्टीकरण के रूप में दिए गए स्पष्टीकरण का उपयोग करने में असमर्थ हैं और तथ्य यह है कि लिनक्स यूनिक्स की नकल करना पसंद करता है, तो आप आवश्यक पृष्ठभूमि को याद कर सकते हैं।
स्किल

1
दिलचस्प है, लेकिन कुछ ऐसा है जिस पर मुझे भ्रम होता है और जो शायद केवल ऐतिहासिक भी है। आज, एक बिन ऑनलाइन डाउनलोड करना, और एक कंपनी बिन बहुत अलग नहीं है। यदि जो ब्लो एक कार्यक्रम बनाता है और मैं इसे डाउनलोड करता हूं, तो इसे / usr / लोकल / बिन के बजाय / ऑप्ट / जॉब्लो / बिन में क्यों नहीं रखा जाए। क्या यह विश्वसनीय प्रदाता बनाम अविश्वास का मामला है? यह मेरे लिए समझ में नहीं आता है।
डिडिएर ए।

1
काश मैं कुछ साल पहले इस 'सटीक' इतिहास को जानता होता। a) मुझे आश्चर्य हुआ कि AIX ने हमें क्यों रोका / usr / local, / opt / IBM और / opt / ibm और bullfreeware का उपयोग करता है / ऑप्ट / फ्रीवेयर - और क्यों मैंने एक अलग पथ का उपयोग किया है (न कि सिर्फ / opt / * sbin)। लिनक्स के साथ अर्ध-प्रासंगिकता के रूप में - बेहतर GNU टूल्स - ऑटो-टूल्स में डिफ़ॉल्ट --prefix / usr / लोकल है। बहुत खराब ऑटोटूल (स्वचालित, ऑटोकॉन्फ़, आदि) का पालन नहीं करते हैं ... लेकिन हम सभी जीवित रहते हैं और सीखते हैं कि डिस्ट्रब कहाँ है। विक्रेताओं ने अपने कार्यक्रम रखे।
माइकल फेल्ट

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