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:
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.
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
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
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
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.