Perbedaan antara / bin dan / usr / bin

83

Saya membaca ini di situs web ini dan itu tidak masuk akal.

http://rcsg-gsir.imsb-dsgi.nrc-cnrc.gc.ca/documents/basic/node32.html

Ketika UNIX pertama kali ditulis, /bindan /usr/binsecara fisik berada di dua disk yang berbeda: /binberada di disk yang lebih cepat lebih cepat (lebih mahal), dan /usr/binpada disk yang lebih lambat lebih besar. Sekarang, /binadalah tautan simbolis ke /usr/bin: mereka pada dasarnya direktori yang sama.

Tetapi ketika Anda lsyang /binfolder, memiliki kandungan jauh lebih kecil dari /usr/binfolder (setidaknya pada sistem yang berjalan saya).

Jadi bisakah seseorang menjelaskan perbedaannya?

siapa saya
sumber
bukankah orang-orang itu berbicara tentang mesin tertentu?
tshepang
1
@tshepang dengan baik jika Anda terus mengklik, di artikel Anda akan mencapai Pengantar Dasar untuk UNIX / linux . Jadi saya katakan tidak, mereka tidak berbicara tentang mesin khusus
xenoterracide
3
@ xeno Ya, saya lakukan, tetapi tidak bertahan cukup lama. Dalam hal ini, halaman itu harus diturunkan. Sangat menyesatkan.
tshepang
3
Dokumen itu dapat dianggap sebagai 'referensi sejarah'. Jika Anda melihat halaman "tentang dokumen ini", Anda akan melihat bahwa itu awalnya dilindungi hak cipta pada tahun 1993. Jika Anda melihat daftar pustaka, itu sumber terbaru adalah 1997. Sebagian besar sistem operasi mirip unix populer telah berubah secara substansial sejak kemudian.
gabe.
1
Siapa pun yang tertarik dengan historisitas konfigurasi ini harus membaca ini: lists.busybox.net/pipermail/busybox/2010-December/074114.html
JDS

Jawaban:

73

Apa? tidak /bin/bukan symlink ke /usr/binpada sistem yang sesuai FHS. Perhatikan bahwa masih ada Unices dan Linux populer yang mengabaikan hal ini - misalnya, /bindan /sbindisinkronkan dengan /usr/binArch Linux (alasannya adalah Anda tidak perlu /binmelakukan penyelamatan / mode pengguna tunggal, karena Anda hanya ingin boot live CD).

/bin

berisi perintah yang dapat digunakan oleh administrator sistem dan oleh pengguna, tetapi yang diperlukan ketika tidak ada filesystem lain yang dipasang (misalnya dalam mode pengguna tunggal). Ini juga dapat berisi perintah yang digunakan secara tidak langsung oleh skrip

/usr/bin/

Ini adalah direktori utama dari perintah yang dapat dieksekusi pada sistem.

pada dasarnya, /binberisi executable yang diperlukan oleh sistem untuk perbaikan darurat, booting, dan mode pengguna tunggal. /usr/binberisi semua binari yang tidak diperlukan.

Saya akan perhatikan, bahwa mereka dapat berada di disk / partisi yang terpisah, /binharus pada disk yang sama dengan /. /usr/bindapat berada di disk lain - walaupun perhatikan bahwa konfigurasi ini agak rusak untuk sementara waktu (inilah sebabnya misalnya systemd memperingatkan tentang konfigurasi ini saat boot).

Untuk kebenaran penuh, beberapa unix mungkin mengabaikan FHS, karena saya percaya ini hanya Linux Standard, saya tidak tahu bahwa itu sudah dimasukkan dalam SUS, Posix atau standar UNIX lainnya, meskipun harus IMHO. Ini adalah bagian dari standar LSB .

xenoterracide
sumber
Jadi apakah itu berarti saya dapat berbagi / usr / bin antara dua distro? seperti ubuntu 10.04 dan 10.10?
balki
4
@balki tidak, mereka masih harus ditautkan dengan benar, yang berarti mereka harus menggunakan versi libs yang mereka buat.
xenoterracide
6
/binadalah tautan ke /usr/binbeberapa kesatuan, seperti (beberapa rilis?) Solaris.
Gilles
1
@ Balki Anda mungkin dapat berbagi di /usrantara dua distro yang sangat mirip, meskipun saya tidak akan mencobanya kecuali jika Anda tahu apa yang Anda lakukan, dan Anda siap untuk percobaan gagal dengan cara yang membuat komputer tidak bisa boot, atau makan data Anda. /usr
Harap
2
Mari kita sertakan juga bahwa / usr / local / bin adalah tempat program yang tidak termasuk dalam distribusi Anda tetapi dimaksudkan untuk penggunaan seluruh sistem diinstal.
Donato
56

/sbin - Binari diperlukan untuk mem-boot, perbaikan sistem tingkat rendah, atau pemeliharaan (jalankan level 1 atau S)

/bin - Binari diperlukan untuk fungsi sistem normal / standar di semua level run.

/usr/bin - Aplikasi / distribusi binari dimaksudkan untuk diakses oleh pengguna yang masuk secara lokal

/usr/sbin - Aplikasi / distribusi binari yang mendukung atau mengkonfigurasi hal-hal di / sbin.

/usr/share/bin - Aplikasi / distribusi binari atau skrip yang dimaksudkan untuk diakses melalui web, yaitu aplikasi web Apache

*local*- Binari bukan bagian dari distribusi; dikompilasi secara lokal atau diinstal secara manual. Biasanya tidak pernah ada /local/bintetapi selalu a /usr/local/bindan /usr/local/share/bin.

LawrenceC
sumber
4
Oh, dan Anda bisa meletakkan semua ini di disk atau partisi terpisah jika Anda suka, untuk keamanan atau apa pun. Idenya adalah Anda dapat umount / usr dan sistem akan memiliki semua yang diperlukan untuk fungsi dasar, tetapi tidak dapat menjalankan aplikasi non-sistem.
LawrenceC
1
Saya berharap saya sudah tahu ini tahun lalu. Penjelasan terbaik yang saya lihat sejauh ini. Saya tidak bisa mengatakan saya terlihat sangat keras, tetapi senang akhirnya tahu jawabannya.
David
2
ini jawaban yang bagus saya akan menyumbangkan 10 poin saya sendiri jika saya bisa
amfibi
@ultrasawblade /usr/binsecara otomatis dilepas saat tidak ada pengguna yang masuk? Misalnya, ketika LINUX mem-boot dan menyajikan otentikasi login, sudah /usr/binterpasang atau tidak?
1
Tidak, itu terpasang saat boot dan tetap terpasang kecuali Anda melepasnya, kecuali jika sistem Anda dikonfigurasi secara tidak biasa.
LawrenceC
17

Beberapa jenis "pembaruan" tentang masalah ini:

Baru-baru ini beberapa distribusi Linux penggabungan /binke dalam /usr/bindan Relatedly /libke /usr/lib. Terkadang juga (/usr)/sbinke /usr/bin(Arch Linux). Jadi /usrdiharapkan tersedia pada saat yang sama /.

Perbedaan antara kedua hierarki dianggap sebagai kompleksitas yang tidak perlu sekarang. Idenya dulu hanya /bintersedia saat boot, tetapi memiliki ramdisk awal membuat ini usang.

Saya tahu Fedora Linux (2011) dan Arch Linux (2012) menggunakan cara ini dan Solaris melakukan ini untuk waktu yang lama (> 15 tahun).

JonnyJD
sumber
8

Di Linux /bindan /usr/binmasih terpisah karena itu umum ada /usrdi partisi yang terpisah (meskipun konfigurasi ini rusak dengan cara yang halus, kadang-kadang). In /binadalah semua perintah yang akan Anda perlukan jika Anda hanya menginstalnya /.

Pada Solaris dan Arch Linux (dan mungkin yang lain) /binadalah symlink ke /usr/bin. Arch juga memiliki /sbindan /usr/sbinterhubung ke /usr/bin.

Dari catatan khusus, pernyataan yang /binuntuk perintah "administrator sistem" dan /usr/binuntuk perintah pengguna tidak benar (kecuali Anda berpikir itu bashdan lshanya untuk admin, dalam hal ini Anda harus banyak belajar). Perintah administrator ada di /sbindan /usr/sbin.

bahamat
sumber
1
siapa bilang binhanya untuk administrator sistem? itu untuk apa sbin.
xenoterracide
Salah mengutip Anda. Maaf, saya membaca terlalu cepat.
bahamat
5

Ada banyak sistem berbasis UNIX. Linux, AIX, Solaris, BSD, dll. Kutipan asli memberikan konteks historis yang berlaku untuk semua rasa. Jika Anda melihat satu sistem tertentu, Anda akan melihat hasil yang berbeda. Kalimat terakhir dari kutipan asli hanya khusus untuk beberapa versi dan distribusi.

Chris Quenelle
sumber