/ बिन, / sbin, / usr / bin, / usr / sbin, / usr / स्थानीय / बिन, / usr / स्थानीय / sbin के बीच अंतर


282

मेरे पास कमांड फाइलों के साथ छह निर्देशिकाएं हैं। ये हैं /bin, /sbin, /usr/bin, /usr/sbin, /usr/local/binऔर /usr/local/sbin

इनमें क्या अंतर हैं? अगर मैं अपनी स्क्रिप्ट लिख रहा हूं, तो मुझे उन्हें कहां जोड़ना चाहिए?


सम्बंधित:



@Keelan आपका प्रश्न एक प्रश्न के करीब है जिसे मैंने एक साल पहले पोस्ट किया था: askubuntu.com/questions/830074/…
WinEunuuchs2Unix

जवाबों:


348

कृपया इसके लिए लिनक्स के लिए फाइलसिस्टम पदानुक्रम मानक (FHS) देखें

  • /bin: /usrविभाजन माउंट होने से पहले प्रयोग करने योग्य बायनेरिज़ के लिए । इसका उपयोग बहुत प्रारंभिक बूट चरण में उपयोग किए जाने वाले तुच्छ बायनेरिज़ के लिए किया जाता है या जिन्हें आपको सिंगल-यूज़र मोड में बूट करने के लिए उपलब्ध होना चाहिए। जैसे बाइनरी के बारे में सोचो cat, lsआदि

  • /sbin : वही, लेकिन सुपरसियर (रूट) विशेषाधिकारों के साथ बायनेरिज़ के लिए आवश्यक

  • /usr/bin: पहले के समान, लेकिन सामान्य सिस्टम-वाइड बायनेरिज़ के लिए

  • /usr/sbin : ऊपर के समान, लेकिन आवश्यक सुपरसुसर (रूट) विशेषाधिकारों के साथ बायनेरिज़ के लिए।


अगर मैं अपनी स्क्रिप्ट लिख रहा हूं, तो मुझे इनको कहां जोड़ना चाहिए?

इनमे से कोई भी नहीं। आपको सिस्टम-वाइड उपलब्ध स्क्रिप्ट का उपयोग करना चाहिए /usr/local/binया करना चाहिए /usr/local/sbinlocalपथ मतलब है कि यह प्रणाली पैकेज (यह वह जगह है द्वारा प्रबंधित नहीं कर रहा है एक त्रुटि Debian / Ubuntu के पैकेज के लिए)।

के लिए उपयोगकर्ता-स्कोप लिपियों , का उपयोग ~/bin(अपने घर निर्देशिका में एक व्यक्तिगत बिन फ़ोल्डर)।

FHS कहता है /usr/local:

स्थानीय डेटा के लिए तृतीयक पदानुक्रम, इस होस्ट के लिए विशिष्ट है । आमतौर पर आगे उपनिर्देशिका, जैसे, है bin/, lib/, share/


so / bin वह जगह है जहां सभी कोर फाइलें स्थापित हैं। जैसे ls, बिल्ली, pwd, आदि? तो, / usr / bin वह जगह है जहां उपयोगकर्ता इंस्टॉल किए गए ऐप्स हैं? / usr / bin में क्या होना चाहिए इसके कुछ उदाहरण हैं?
पाटोशी at ト

1
क्या /binकिसी समस्या के कारण स्क्रिप्ट रखना ? मैंने आपके उत्तर के अनुसार अपनी स्क्रिप्ट को स्थानांतरित कर दिया है लेकिन मैं अभी भी उत्सुक हूं
रमेश

5
@RumeshSudhaharan आपको ऐसा नहीं करना चाहिए, क्योंकि यह पैकेज प्रबंधन द्वारा प्रबंधित किया जाता है। यदि कोई अन्य पैकेज भी उस पथ का उपयोग करना चाहता है, तो यह आपकी फ़ाइल को अधिलेखित कर देगा। पैकेज में फाइलें कभी भी ओवरलैप नहीं हो सकती हैं (कम से कम आधिकारिक रिपॉजिटरी के लिए), इसलिए आप स्थानीय पथ में स्थापित करते समय अधिक सुरक्षित होते हैं। इसके अलावा, यह सिर्फ अपनी सुविधा और सुरक्षा के लिए है। एक स्थानीय पथ में आप सिस्टम को इतने खराब तरीके से गड़बड़ नहीं कर सकते हैं और आप गलती से सिस्टम बाइनरी को बदल नहीं सकते हैं।
gertvdijk

8
मुझे त्रुटि पृष्ठ पर स्पष्टीकरण पसंद है:Severity:Serious Certainty:Certain
cutrightjm

1
मैंने कुछ फाइलें / usr / स्थानीय / बिन में डाल दी हैं और मैं उन्हें निष्पादित कर सकता हूं, हालांकि मैं उन्हें संपादित नहीं कर सकता, ls -laकुछ भी नहीं दिखाता है
एम। रेजा नासिरेलो

6

मैंने एक साल पहले खुद से इसी तरह का सवाल किया था: मेरी बैश स्क्रिप्ट लगाने के लिए सर्वश्रेष्ठ निर्देशिका?

बायनेरिज़ के लिए सिस्टम निर्देशिका

man hier(पदानुक्रम) सभी निर्देशिकाओं को सूचीबद्ध करता है। बस बायनेरिज़ का उपयोग करने वालों को पाने के लिए:

$ man hier | grep -E 'bin$|sbin$|^.{7}(/bin)|^.{7}(/sbin)' -A2

       /bin   This directory contains executable programs which are needed in single user
              mode and to bring the system up or repair it.

--
       /sbin  Like  /bin,  this  directory  holds commands needed to boot the system, but
              which are usually not executed by normal users.

--
       /usr/X11R6/bin
              Binaries  which  belong  to the X-Window system; often, there is a symbolic
              link from the more traditional /usr/bin/X11 to here.
--
       /usr/bin
              This  is the primary directory for executable programs.  Most programs exe
              cuted by normal users which are not needed for booting or for repairing the
--
       /usr/local/bin
              Binaries for programs local to the site.

--
       /usr/local/sbin
              Locally installed programs for system administration.

--
       /usr/sbin
              This directory contains program binaries for  system  administration  which
              are  not  essential  for the boot process, for mounting /usr, or for system

अपनी खुद की स्क्रिप्ट कहाँ रखें?

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

अपनी खुद की उपयोगकर्ता आईडी स्क्रिप्ट के लिए उन्हें अंदर डाल दिया /home/YOUR_NAME/bin। ध्यान रखें कि आपको यह निर्देशिका पहले बनानी होगी और टर्मिनल को अपने आप सेटअप करने के लिए पथ को पुनः प्राप्त करना होगा ~/.profile। देखें: $ PATH में / home / username / bin कैसे जोड़ें?


मुझे क्या पता मैं नहीं जानता

मैं उबंटू में अपनी कुछ और जटिल बैश स्क्रिप्ट लेने और उन्हें स्थापित स्क्रिप्ट के साथ स्थापित करने पर विचार कर रहा हूं github। यहाँ कुछ उदाहरण हैं:

मुझे लगता है कि स्क्रिप्ट को /usr/bin$ PATH में स्थापित किया जाना चाहिए , लेकिन मैं अभी तक उपयुक्त जगह पर सुनिश्चित नहीं हूं।


1
मैं आपके प्रयास की सराहना करता हूं, लेकिन, "मुझे नहीं पता कि मैं नहीं जानता" भाग को छोड़कर, आपने gertvdijk का जवाब दोहराया।
डैनजेल

1
@danzel मुझे लगता है कि प्रमुख हिस्सा वह man hierअनुभाग है जिस पर gertvdijk का जवाब पता नहीं था। यानी आप कमांड लाइन में निर्देशिका पदानुक्रमित संरचना प्राप्त कर सकते हैं, बिना इसे वेब पर पढ़ने के लिए (यानी यहां)।
विनयुनुच्स

1
यह दिलचस्प जानकारी है, मैं सहमत हूं। लेकिन gertvdijk ने पहले से ही Filesystem Hierarchy Standard (जो man hierIMO का एक सूचनात्मक अपर्याप्त अंश है) का उल्लेख किया है । हालाँकि, यह मेरी निजी राय हो सकती है।
डैनजेल

@ डैनजेल मैं मानता हूं कि वेबसाइटों में हमारी हार्ड ड्राइव की तुलना में बहुत अधिक गहन विश्लेषण है। मैं केवल इंटरनेट का सहारा लिए बिना जानकारी को इंगित करने की कोशिश कर रहा हूं। इसके अलावा उद्धृत विकिपीडिया लिंक गायब है /usr/X11R6/bin और /usr/local/binजो इसमें शामिल है man heir
विनयुनुच्स

@ WinEunuuchs2Unix, पिछले पैरा; क्यों नहीं /usr/local/binजब से तुम पैकेज मैनेजर नहीं हो?
पचेरियर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.