Komut dosyalarına sahip altı dizinim var. Bunlar /bin
, /sbin
, /usr/bin
, /usr/sbin
, /usr/local/bin
ve /usr/local/sbin
.
Bunlar arasındaki farklar nelerdir? Kendi senaryolarımı yazıyorum, nereye eklemeliyim?
İlgili:
Komut dosyalarına sahip altı dizinim var. Bunlar /bin
, /sbin
, /usr/bin
, /usr/sbin
, /usr/local/bin
ve /usr/local/sbin
.
Bunlar arasındaki farklar nelerdir? Kendi senaryolarımı yazıyorum, nereye eklemeliyim?
İlgili:
Yanıtlar:
Lütfen bunun için Linux için Dosya Sistemi Hiyerarşi Standardı'na (FHS) bakın .
/bin
: /usr
Bö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
, ls
vb
/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/bin
veya /usr/local/sbin
sistem genelinde mevcut komut dosyaları için. local
Yol 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/
.
/bin
herhangi bir soruna yol açar mı ? Senaryolarımı senin cevabına göre taşıdım ama hala merak ediyorum
Severity:Serious Certainty:Certain
ls -la
, hiçbir şey göstermiyor
Ben de bir yıl önce kendime benzer bir soru vardı: bash scriptlerimi yerleştirmek için en iyi dizin
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
Tüm kullanıcıların komut dosyalarınıza erişmesi için onları içine koyabilirsiniz /usr/local/bin
. sudo
Burada 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?
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.
man hier
gertvdijk'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).
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.
/usr/X11R6/bin
ve /usr/local/bin
içinde yer alıyor man heir
.
/usr/local/bin
paket yöneticisi olmadığınız için değil?