/ Bin, / sbin, / usr / bin, / usr / sbin, / usr / yerel / bin, / usr / yerel / sbin arasındaki farklar


282

Komut dosyalarına sahip altı dizinim var. Bunlar /bin, /sbin, /usr/bin, /usr/sbin, /usr/local/binve /usr/local/sbin.

Bunlar arasındaki farklar nelerdir? Kendi senaryolarımı yazıyorum, nereye eklemeliyim?


İlgili:



@Keelan Sorunuz bir yıl önce gönderdiğim bir soruya yakın: + askubuntu.com/questions/830074/…
WinEunuuchs2Unix

Yanıtlar:


348

Lütfen bunun için Linux için Dosya Sistemi Hiyerarşi Standardı'na (FHS) bakın .

  • /bin: /usrBölüm monte edilmeden önce kullanılabilen ikili dosyalar için . Bu, çok erken önyükleme aşamasında kullanılan ya da tek kullanıcılı modunda önyükleme yapmak için gerekli olan önemsiz ikili dosyalar için kullanılır. Gibi ikili düşünün cat, lsvb

  • /sbin : Aynı, ancak süper kullanıcı (kök) ayrıcalıklarına sahip olan ikili dosyalar için gereklidir .

  • /usr/bin: İlk ile aynı, ancak genel sistem genelinde kullanılan ikili dosyalar için .

  • /usr/sbin : Yukarıdakiyle aynı, ancak süper kullanıcı (kök) ayrıcalıklarına sahip olan ikili dosyalar için gereklidir.


kendi senaryolarımı yazıyorum, bunları nereye eklemeliyim?

Yukarıdakilerin hiçbiri. Kullanmanız gerekir /usr/local/binveya /usr/local/sbinsistem genelinde mevcut komut dosyaları için. localYol sistem paketleri (bu tarafından yönetilen değil demektir bir hata Debian / Ubuntu paketleri).

İçin kullanıcı kapsamlı komut kullanın ~/bin(ana dizininizde kişisel bin klasörü).

FHS diyor ki /usr/local:

Bu konağa özgü yerel veriler için üçüncül hiyerarşi . Tipik haliyle, örneğin, başka alt-klasör, sahiptir bin/, lib/, share/.


so / bin tüm çekirdek dosyaların kurulu olduğu yerdir. ls, kedi, pwd, vs gibi? Yani, / usr / bin kullanıcı yüklü uygulamalar nerede? / usr / bin içinde neler olması gerektiğine dair bazı örnekler nelerdir?
Patoshi シ ト シ

1
Scriptleri yerleştirmek /binherhangi bir soruna yol açar mı ? Senaryolarımı senin cevabına göre taşıdım ama hala merak ediyorum
Rumesh

5
@RumeshSudhaharan bunu yapmamalısınız, çünkü bu paket yönetimi tarafından yönetiliyor. Başka bir paket de bu yolu kullanmak isterse, dosyanızın üzerine yazacaktır. Paketlerdeki dosyalar hiçbir zaman üst üste gelemez (en azından resmi havuzlar için), bu nedenle yerel yola yüklenirken daha güvenli olursunuz. Ayrıca, sadece kendi rahatınız ve güvenliğiniz için. Yerel bir yolda, sistemi bu kadar kötü bir şekilde karıştırmazsınız ve yanlışlıkla bir sistem ikili dosyasını değiştiremezsiniz.
gertvdijk

8
Hata sayfasındaki açıklaması seviyorum:Severity:Serious Certainty:Certain
cutrightjm

1
/ Usr / local / bin içine bazı dosyalar koydum ve bunları çalıştırabilirim, ancak düzenleyemiyorum ls -la, hiçbir şey göstermiyor
M. Reza Nasirloo

6

Ben de bir yıl önce kendime benzer bir soru vardı: bash scriptlerimi yerleştirmek için en iyi dizin

İkili dosyalar için sistem dizinleri

man hier(hiyerarşi) tüm dizinleri listeler. Sadece ikili dosyalar için olanları almak için:

$ 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

Kendi senaryolarınızı nereye koyacaksınız?

Tüm kullanıcıların komut dosyalarınıza erişmesi için onları içine koyabilirsiniz /usr/local/bin. sudoBurada dosya eklemek / değiştirmek için erişime ihtiyacınız olduğunu unutmayın . Bkz: Özel Linux komut dosyaları yerleştirmek için standart bir yer var mı?

Kendi kullanıcı kimliğiniz için betikleri yazınız /home/YOUR_NAME/bin. Öncelikle bu dizini oluşturmanız gerektiğini ve yolu otomatik olarak ayarlamak için terminali yeniden başlatmanız gerektiğini unutmayın ~/.profile. Bakınız: $ PATH'a / home / username / bin nasıl eklenir?


Ne biliyorum bilmiyorum

Ubuntu askına daha karmaşık bash scriptlerimin bazılarını alıp kurulum scriptleri ile ayarlamayı düşünüyorum github. İşte birkaç örnek:

Ben düşünüyorum komut dosyaları yüklü olması gerekmektedir /usr/bin$ PATH içinde olan, ama henüz uygun yerde emin değilim.


1
Çabalarını takdir ediyorum, ama "Ne bildiğimi bilmiyorum" kısmı dışında, gertvdijk 'in cevabını tekrarladın.
danzel

1
@ danzel Sanırım kilit kısım man hiergertvdijk'in cevabının adreslemediği bölüm. yani, dizinin hiyerarşik yapısını komut satırından web'de okumaya başvurmak zorunda kalmadan alabilirsiniz (yani burada).
WinEunuuchs2Unix

1
Bu ilginç bir bilgi, katılıyorum. Ancak gertvdijk çoktan man hier(IMO'nun bilgi açısından yetersiz bir parçası olan) Dosya Sistemi Hiyerarşi Standardı'ndan bahsetti . Ancak, bu benim kişisel görüşüm olabilir.
danzel

@ danzel Web sitelerinin, bizim sabit disklerimizde olduğundan daha derinlemesine bir analizi olduğunu kabul ediyorum. Sadece internete başvurmadan sabit disklerimizdeki bilgilerin olduğuna işaret etmeye çalışıyorum. Bunun yanında alıntılanan wikipedia bağlantı eksik /usr/X11R6/bin ve /usr/local/biniçinde yer alıyor man heir.
WinEunuuchs2Unix

@ WinEunuuchs2Unix, son para olarak; Neden /usr/local/binpaket yöneticisi olmadığınız için değil?
Pacerier
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.