Forskjeller mellom /bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin

Jeg har seks kataloger med kommandofiler. Disse er /bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin og /usr/local/sbin.

Hva er forskjellene mellom disse? Hvis jeg skriver mine egne skript, hvor skal jeg legge dem inn?


Relatert til dette:

Løsning

Se Filesystem Hierarchy Standard (FHS) for Linux for mer informasjon om dette.

  • /bin : For binære filer som kan brukes før /usr-partisjonen er montert. Denne brukes til trivielle binære filer som brukes i den tidlige oppstartsfasen, eller som du må ha tilgjengelig ved oppstart av enbrukermodus. Tenk på binære programmer som cat, ls osv.

  • /sbin : Samme, men for binære programmer som krever superbrukerrettigheter (root).

  • /usr/bin : Samme som først, men for generelle binære programmer for hele systemet.

  • /usr/sbin : Samme som ovenfor, men for binære programmer som krever superbrukerrettigheter (root).


Hvis jeg skriver mine egne skript, hvor skal jeg legge til disse?

Ingen av de ovennevnte. Du bør bruke /usr/local/bin eller /usr/local/sbin for skript som er tilgjengelige for hele systemet. Stien local betyr at den ikke administreres av systempakkene (dette er en feil for Debian/Ubuntu-pakker).

For brukertilpassede skript bruker du ~/bin (en personlig bin-mappe i hjemmekatalogen din).

FHS sier for /usr/local:

Tertiært hierarki for lokale data, spesifikt for denne verten. Har vanligvis flere underkataloger, f.eks. bin/, lib/, share/.

Kommentarer (6)

Jeg hadde et lignende spørsmål selv for over et år siden: https://askubuntu.com/questions/830074/best-directory-to-place-my-bash-scripts

Systemkataloger for binære filer

man hier (hierarchy) viser alle katalogene. For å få de som bare er for binære filer, bruk:

$ 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

Hvor skal du plassere dine egne skript?

For at alle brukere skal få tilgang til skriptene dine, kan du legge dem i /usr/local/bin. Husk at du trenger sudo-tilgang for å legge til/endre filer her. Se: https://askubuntu.com/questions/195652/is-there-a-standard-place-for-placing-custom-linux-scripts

For dine egne bruker-ID-skript kan du legge dem i /home/YOUR_NAME/bin. Husk at du må opprette denne katalogen først og starte terminalen på nytt for å få banen automatisk satt opp av ~/.profile. Se: 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


Hva jeg vet at jeg ikke vet

Jeg vurderer å ta noen av mine mer komplekse bash-skript i Ask Ubuntu og sette dem opp med installasjonsskript på github. Her er noen eksempler:

Jeg tror at skriptene skal installeres i /usr/bin som ligger i $PATH, men jeg er ikke sikker på hvor det er riktig ennå.

Kommentarer (5)