Dlaczego jest tak wiele miejsc do umieszczenia pliku binarnego w Linuksie? Jest ich co najmniej pięć:
/bin/
/sbin/
/usr/bin/
/usr/local/bin/
/usr/local/sbin/
A na mojej biurowej szafie nie mam uprawnień do zapisu na niektóre z nich.
Jaki typ pliku binarnego wchodzi w które z nich bin
?
filesystems
binary
Lazer
źródło
źródło
/usr/sbin/
.~/bin/
na rzeczy osobiste./bin
zostały połączone/usr/bin
i/sbin
zostały połączone/usr/sbin
- patrz The Case for the / usr Merge ./usr/local/bin
?Odpowiedzi:
/bin
(i/sbin
) były przeznaczone dla programów, które musiały znajdować się na małej/
partycji przed/usr
zamontowaniem większych itp. Obecnie służy głównie jako standardowa lokalizacja dla takich kluczowych programów/bin/sh
, chociaż pierwotne zamiary mogą być nadal istotne np. W przypadku instalacji na małych urządzeniach wbudowanych./sbin
, w odróżnieniu od/bin
, dotyczy programów do zarządzania systemem (zwykle nie używanych przez zwykłych użytkowników) potrzebnych przed/usr
zamontowaniem./usr/bin
jest przeznaczony dla normalnych programów użytkownika zarządzanych przez dystrybucję.Istnieje
/usr/sbin
taki sam związek z tym,/usr/bin
co/sbin
musi/bin
./usr/local/bin
jest dla zwykłych programów użytkownika nie zarządzanych przez menedżera pakietów dystrybucyjnych, np. pakietów skompilowanych lokalnie. Nie należy ich instalować,/usr/bin
ponieważ przyszłe aktualizacje dystrybucji mogą je modyfikować lub usuwać bez ostrzeżenia./usr/local/sbin
, Jak można się domyślić w tym momencie, to/usr/local/bin
jak/usr/sbin
się/usr/bin
.Oprócz tego istnieje także
/opt
pakiet monolityczny dla nie-dystrybucji, chociaż zanim zostały one właściwie zintegrowane, różne dystrybucje umieszczają tam Gnome i KDE. Zasadniczo powinieneś zarezerwować go na duże, źle zachowujące się pakiety stron trzecich, takie jak Oracle.źródło
~/bin
i dodaj ten katalog do ŚCIEŻKI jako użytkownik ... Dzięki za notatkę usunąłem mój bardzo nieaktualny komentarz.PATH
zmiennej systemowej , aecho $PATH
dla mnie pokazuje/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
, co oznacza, że pliki wykonywalne/usr/local/bin
mają pierwszeństwo przed tymi, w/usr/bin
których mają pierwszeństwo przed tymi w/bin
.Polecam zajrzeć na stronę podręcznika hierarchii systemu plików:
Który jest również dostępny online, na przykład: http://linux.die.net/man/7/hier
źródło
Filesystem Hierarchy Standard wpis w Wikipedii pomógł mi odpowiedzieć na to pytanie, gdy miałem go, plus ma bardzo tabelę wyjaśniającą.
Fragment tej strony 1 :
1 Pobrano 19 czerwca 2019 r .; bezpośredni link .
źródło
Do
sbin
katalogów zawiera programy, które są na ogół tylko administrowanie systemem. Programy dla zwykłych użytkowników nigdy nie powinny w nich wchodzić.Kilka programów jest potrzebnych podczas uruchamiania i kończy się w
/bin/
lub/sbin/
. Muszą być one dostępne przed zamontowaniem systemów plików. Takie rzeczymount
,fsck
które są wymagane do sprawdzania i montowania systemów plików, muszą tam być.Większość programów w pakiecie kończy się w
/usr/bin/
i/usr/sbin/
. Mogą znajdować się w systemie plików innym niż główny system plików. W niektórych przypadkach mogą znajdować się na dysku sieciowym.Lokalne programy i skrypty należą do
/usr/local/bin/
i/usr/local/sbin/
. To identyfikuje je jako wyraźnie niestandardowe i prawdopodobnie dostępne tylko na stronie.W celu uzyskania dalszych wyjaśnień spróbuj uruchomić polecenie,
man hier
które powinno dostarczyć opis zalecanej hierarchii systemu plików dla twojej dystrybucji. Możesz także przeczytać o Hierarchii Systemów Plików na Wikipediiźródło
W latach siedemdziesiątych
UNIX
posiadał wszystkie oficjalne pliki wykonywalne/bin
i/usr/bin
znajdował się pod katalogami domowymi użytkowników (np./usr/dmr
), Który był dostępny dla każdego użytkownika do przechowywania własnych plików binarnych, które mogłyby zainteresować również innych.Rezultatem tego otwarcia
/usr/bin
było złomowisko nieudokumentowanego oprogramowania, dlategoStephen Bourne
napisałem,cron script
że co noc sprawdzał nowe pliki binarne i usuwał wszystkie pliki binarne, które nie miały dokumentacji lub które zostały zaktualizowane bez aktualizacji ich dokumentacji.Pod koniec lat siedemdziesiątych
/usr/bin
został zintegrowany z podstawową dystrybucją systemu operacyjnego i ludzie zaczęli używać go/usr/local/bin
do celów poprzedniej wersji open/usr/bin
.Po pewnym czasie, administratorów używany
/usr/local/bin
do przechowywanianon-local
oprogramowania, które zostało importowane z sieci (np Usenet) i jako firmy UNIX nie lubił powtarzać tego samego błędu jak w/usr/bin
kolejny, odbyła się konferencja hierarchii systemu plików około 1987, gdzie wszystkie firmy UNIX zgodził poddać się/usr/local/bin
i/opt/<vendor>/bin
zamiast tego użyć .Niestety dystrybucje Linuksa nie podążyły za tą decyzją ...
źródło
/opt
i nie dotyczyło systemu UNIX, ale systemu Linux. To jest jak odpowiedź na pytanie „Dlaczego samochody mają 4 koła?” z „Rowery mają 2! Niestety samochody nie”. co nie pomaga OP zrozumieć, dlaczego samochody mają 4.