bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin arasındaki farklar

Komut dosyaları içeren altı dizinim var. Bunlar /bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin ve /usr/local/sbin.

Bunlar arasındaki farklar nelerdir? Eğer kendi komut dosyalarımı yazıyorsam, bunları nereye eklemeliyim?


İlgili:

Çözüm

Bunun için lütfen Linux için Dosya Sistemi Hiyerarşi Standardı (FHS)'e bakın.

  • /bin : /usr bölümü bağlanmadan önce kullanılabilen ikili dosyalar için. Bu, çok erken önyükleme aşamasında kullanılan önemsiz ikililer veya tek kullanıcılı modda önyükleme yaparken kullanmanız gerekenler için kullanılır. Örneğin cat, ls gibi ikilileri düşünün.

  • /sbin : Aynı, ancak superuser (root) ayrıcalıkları gerekli olan ikili dosyalar için.

  • /usr/bin : İlkiyle aynı, ancak genel sistem genelindeki ikili dosyalar için.

  • /usr/sbin : Yukarıdaki ile aynıdır, ancak süper kullanıcı (root) ayrıcalıklarına sahip ikili dosyalar için gereklidir.


Eğer kendi komut dosyalarımı yazıyorsam, bunları nereye eklemeliyim?

Yukarıdakilerin hiçbiri. Sistem genelinde kullanılabilir komut dosyaları için /usr/local/bin veya /usr/local/sbin kullanmalısınız. Yerel yol, sistem paketleri tarafından yönetilmediği anlamına gelir (bu Debian/Ubuntu paketleri için bir hatadır).

Kullanıcı kapsamındaki komut dosyaları* için ~/bin (ev dizininizdeki kişisel bin klasörü) kullanın.

FHS `/usr/local' için diyor:

Yerel veriler için üçüncül hiyerarşi, bu ana bilgisayara özgü. Tipik olarak bin/, lib/, share/ gibi başka alt dizinlere sahiptir.

Yorumlar (6)

Bir yıldan uzun bir süre önce ben de benzer bir soru sormuştum: https://askubuntu.com/questions/830074/best-directory-to-place-my-bash-scripts

İkili dosyalar için sistem dizinleri

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

$ 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 komut dosyalarınızı nereye koyacaksınız?

Tüm kullanıcıların betiklerinize erişebilmesi için onları /usr/local/bin içine koyabilirsiniz. Buraya dosya eklemek / değiştirmek için sudo erişimine ihtiyacınız olduğunu unutmayın. Bakınız: https://askubuntu.com/questions/195652/is-there-a-standard-place-for-placing-custom-linux-scripts

Kendi kullanıcı kimliği betikleriniz için bunları /home/YOUR_NAME/bin içine koyun. Bu dizini önce oluşturmanız ve ~/.profile tarafından otomatik olarak ayarlanan yolu almak için terminali yeniden başlatmanız gerektiğini unutmayın. Bakınız: https://askubuntu.com/questions/402353/how-to-add-home-username-bin-to-path?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa


Bilmediğimi biliyorum

Ubuntu'ya Sor'daki** daha karmaşık bash betiklerimden bazılarını alıp `github'da yükleme betikleri ile kurmayı düşünüyorum. İşte birkaç örnek:

Komut dosyalarının $PATH içinde bulunan /usr/bin içine yüklenmesi gerektiğini düşünüyorum, ancak henüz uygun yer konusunda emin değilim.

Yorumlar (5)