Linux'ta / usr / bin / usr / yerel / bin


445

Neden Linux'ta ikili dosya koymak için bu kadar çok yer var? En azından bu beş kişi var:

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

Ve ofis kutumda, bunlardan bazılarına yazma iznim yok.

Bunlardan hangisine ne tür bir ikili dosya girer bin?


28
Unuttun /usr/sbin/.
Merhaba71,

15
Ve ~/bin/kişisel şeyler için.
Calmarius

1
Bugünlerde daha az sayıda yer var, çünkü bunlar /binbirleştiler /usr/binve /sbinbirleştiler /usr/sbin- bkz . / Usr Birleştirme Örneği .
Piotr Dobrogost


@Calmarius, Ne? Eğer kullanmamalısınız /usr/local/bin?
Pacerier

Yanıtlar:


558
  1. /bin(ve /sbin) /daha büyük /usrvb. bölümler monte edilmeden önce küçük bir bölüm üzerinde olması gereken programlar için tasarlandı . Bu günlerde, /bin/shasıl amaç yine de küçük gömülü cihazlardaki kurulumlar için geçerli olsa da, çoğu gibi temel programlar için standart bir yer olarak hizmet vermektedir .

  2. /sbinfarklı olarak /bin, daha önce /usrmonte edilmesi gereken sistem yönetim programları (normal kullanıcılar tarafından normalde kullanılmayan) içindir .

  3. /usr/bin dağıtım tarafından yönetilen normal kullanıcı programları içindir.

  4. Olması /usr/sbingerektiği /usr/bingibi bir ilişki /sbinvar /bin.

  5. /usr/local/binNormal kullanıcı programları için ise değil dağıtım paket yöneticisi tarafından yönetilen, örneğin yerel olarak derlenmiş paketler. Bunları yüklememelisiniz, /usr/binçünkü gelecekteki dağıtım yükseltmeleri uyarmadan onları değiştirebilir veya silebilir.

  6. /usr/local/sbinMuhtemelen bu noktada tahmin edebilirsiniz gibi, etmektir /usr/local/binolarak /usr/sbiniçin /usr/bin.

Ek olarak, /optmonolitik olmayan paketler için olanları da vardır, ancak Gnome ve KDE'yi koymak için çeşitli dağılımlar uygun şekilde entegre edilmeden önce. Genellikle onu Oracle gibi büyük, kötü davranış gösteren üçüncü taraf paketlerine ayırmalısınız.


37
Bence bu cevap ortak bir anlaşmaları netleştirmek için harika bir iş çıkardı, ancak Rob Landley'den gelen bu yazı saçma sapan bir fikir edinmek istiyorsa gerçekten harika bir okuma. Lists.busybox.net/pipermail/busybox/2010 /074114.html
Subfuzion

3
kanonik akım referansı için refspecs.linuxfoundation.org/fhs.shtml . @Kojiro tarafından link modası geçmiş ve yeni spec yok.
Didier A.

2
İnternetten indirdiğim bir bölmeyi nereye koyabilirim? Açıklamanızdan, / usr / local / bin veya / usr / bin içinde olması gerektiği gibi geliyor. / Usr / bin, asla elle dokunmamam gereken bir şey midir ve yalnızca paket yöneticisinin oynamasına izin verir mi?
Didier A.

3
@DidierA. koymak ~/binbenim ciddiye modası geçmiş yorum sildi, not için ... Teşekkür ve bir kullanıcı olarak PATH için o dizini ekleyin.
kojiro

3
Sorumun ilk kısmına cevabı burada buldum: superuser.com/a/238993/425838 . Öncelik, sistem PATHdeğişkenindeki düzene dayanır ve echo $PATHbenim için gösterir /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/gameski bu, çalıştırılabilirlerin, içinde /usr/local/binolanlar /usr/biniçin öncelikli olanlara göre öncelikli olduğu anlamına gelir /bin.
Gabriel Staples,

65

Dosya sistemi hiyerarşisi man sayfasına göz atmanızı öneririm:

man hier

Örneğin çevrimiçi olarak da erişilebilir: http://linux.die.net/man/7/hier


1
Bu kullanıcının sorusuna cevap vermiyor.
Billy ONeal

14
Man sayfası, her bir depo dizini için, bunlara neyin girdiğini, hangisinin sorulardan biri olduğunu açıklayan bir girdi içerir.
davitenio

34

Dosya Sistemi Hiyerarşi Standart Wikipedia girişi onu varken bana aynı soruyu cevaplamak yardımcı artı bu çok açıklayıcı bir tablo vardır.

Bu sayfadan alıntı 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 Haziran 2019'da alındı; permalink .


17

sbinDizinleri genellikle sadece sistem yönetimi olan programları içeren. Düzenli kullanıcılar için programlar hiçbir zaman bunlara girmemelidir.

Başlatma sırasında birkaç program gerekir ve sonunda /bin/veya ile bitirin /sbin/. Bunlar dosya sistemleri kurulmadan önce mevcut olmalıdır. Yapılacaklar gibi mountve fsckemin olun ve sistemler olmalıdır dosyaları mount için gereklidir.

Paketlenmiş programların çoğu /usr/bin/ve ile sonuçlanır /usr/sbin/. Bunlar kök dosya sistemi dışındaki bir dosya sisteminde olabilir. Bazı durumlarda, ağa bağlı bir sürücüde olabilirler.

Yerel programlar ve scriptler aittir /usr/local/bin/ve /usr/local/sbin/. Bu, onları açıkça standart dışı ve muhtemelen sadece sitede mevcut olarak tanımlar.

Daha fazla açıklama man hieriçin, dağıtımınız için önerilen dosya sistemi hiyerarşisinin bir açıklamasını vermesi gereken komutu çalıştırmayı deneyin . Ayrıca Wikipedia'da Dosya Sistemi Hiyerarşisi hakkında okumak isteyebilirsiniz.


1
+1 Eğer üst biraz fazla ise, gerçekten kısa bir açıklama.
CppLearner

"Yerel programlar ve komut dosyaları / usr / local / bin / ve / usr / local / sbin /" dizinine aittir - Yerel programlar "işletim sistemi'nin hiçbir yerinde değil" anlamına gelir, ancak bunları yüklemeye karar verdim ve kullanmak istiyorum "?
Jim Aho

11

1970'li yıllarda UNIXtüm resmi yürütülebilir vardı /binve /usr/binkullanıcıların ev dizinleri altında bir yeri oldu (örn /usr/dmr) herhangi bir kullanıcı yanı başkaları için ilgi olabileceğini kendi ikilileri saklamak için kullanılabilir olduğunu.

Bu açıkken sonucu /usr/binbelgesiz yazılım hurdalık ve böylece Stephen Bournebir yazmış cron scripther gece yeni ikilileri için kontrol o ve hem de onların belgelerine güncellemeden güncellendi bir belgelerine sahip veya değil tüm ikilileri kaldırıldı.

1970'lerin sonunda /usr/bin, işletim sistemi temel dağıtımına entegre edildi ve insanlar /usr/local/binönceki açık için kullanmaya başladı /usr/bin.

Bir süre sonra, sysadmins ağdan (örneğin USENET) ithal edilen yazılımı /usr/local/bindepolamak için kullanılırdı non-localve UNIX şirketleri aynı hatayı tekrarlamaktan hoşlanmıyorlardı /usr/bin, 1987'de, tüm UNIX şirketlerinin kabul ettiği bir dosya sistemi hiyerarşi konferansı yapıldı. vazgeçmek /usr/local/binve kullanmak için /opt/<vendor>/bin.

Ne yazık ki, Linux dağıtımları bu kararı takip etmedi ....


Çok ilginç olsa da, bunların hiçbiri /optUNIX ile ilgili değil Linux ile ilgili olan soruyu cevaplamaya bile çalışmıyor . Bu, "Neden araçlarda 4 tekerlek var?" Cevabı gibi. ile "Bisiklet 2 var! Ne yazık ki, araba yok." bu da OP'nin otomobillerin neden 4 olduğunu anlamalarına yardımcı olmuyor
terdon

2
Verilen açıklamayı Linux'un arka planına ve Linux'un UNIX'i taklit etmekten hoşlandığına dair bir açıklama olarak kullanamıyorsanız, gereken arka planı kaçırmış olabilirsiniz.
schily

1
İlginç, ama kafam karıştığında ve belki de sadece tarihsel olan bir şey. Bugün, çevrimiçi bir kutu indirme ve bir şirket kutusu çok farklı değil. Eğer Joe Blow bir program hazırlarsa ve indirirseniz, neden / usr / local / bin yerine / opt / JowBlow / bin dizinine koymuyorsunuz. Güvenilir olmayana karşı güvenilir bir mesele mi? Bana mantıklı gelmiyor.
Didier A.

1
Keşke bu 'kesin' tarihi birkaç yıl önce bilseydim. a) AIX'in neden / usr / local kullandığı, / opt / IBM ve / opt / ibm kullandığı ve bulleware yazılımının / opt / freeware kullanımından kaçındığını ve neden farklı bir yol kullandığını merak ettim (sadece / opt / * sbin değil). Linux ile yarı-ilgili olarak - daha iyi GNU araçları - varsayılan - otomatik araçlarda önek / usr / local. Vb Çok kötü Autotools (automake, autoconf, ... uymayan Ama hepimiz hayatta ve nerede distrub öğrenmek || satıcıları programlarını koydu...
Michael Keçe

Bu konferanslardan bir tanesini daha alabilir miyiz? Sadece bu kez, HER ŞEY DİNLE!
MemphiZ
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.