Unterschiede zwischen /bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin

Ich habe sechs Verzeichnisse mit Befehlsdateien. Diese sind /bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin und /usr/local/sbin.

Was sind die Unterschiede zwischen diesen? Wenn ich meine eigenen Skripte schreibe, wo sollte ich sie hinzufügen?


Verwandt:

Lösung

Bitte lesen Sie dazu den Filesystem Hierarchy Standard (FHS) for Linux.

  • /bin : Für Binärdateien, die verwendet werden können, bevor die /usr-Partition eingehängt wird. Dies wird für triviale Binärdateien verwendet, die in der sehr frühen Boot-Phase verwendet werden oder die Sie beim Booten im Einzelbenutzermodus zur Verfügung haben müssen. Denken Sie an Binärprogramme wie cat, ls, etc.

  • /sbin : Dasselbe, aber für Binärdateien, die Superuser (root) Rechte benötigen.

  • /usr/bin : Dasselbe wie das erste, aber für allgemeine systemweite Binärdateien.

  • /usr/sbin : Wie oben, aber für Binärdateien, die Superuser-Rechte (root) benötigen.


Wenn ich meine eigenen Skripte schreibe, wo sollte ich diese hinzufügen?

Keines der oben genannten. Sie sollten /usr/local/bin oder /usr/local/sbin für systemweit verfügbare Skripte verwenden. Der local Pfad bedeutet, dass es nicht von den Systempaketen verwaltet wird (dies ist ein Fehler für Debian/Ubuntu Pakete).

Für benutzerspezifische Skripte verwenden Sie ~/bin (einen persönlichen bin-Ordner in Ihrem Home-Verzeichnis).

Die FHS sagt für /usr/local:

Tertiäre Hierarchie für lokale Daten, spezifisch für diesen Host. Hat typischerweise weitere Unterverzeichnisse, z.B. bin/, lib/, share/.

Kommentare (6)

Ich selbst hatte vor über einem Jahr eine ähnliche Frage: https://askubuntu.com/questions/830074/best-directory-to-place-my-bash-scripts

Systemverzeichnisse für Binärdateien

man hier (Hierarchie) listet alle Verzeichnisse auf. Um die Verzeichnisse nur für Binärdateien zu erhalten, verwenden Sie:

$ 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

Wohin mit den eigenen Skripten?

Damit alle Benutzer auf Ihre Skripte zugreifen können, können Sie sie in /usr/local/bin ablegen. Denken Sie daran, dass Sie sudo-Zugriff benötigen, um hier Dateien hinzuzufügen/zu ändern. Siehe: https://askubuntu.com/questions/195652/is-there-a-standard-place-for-placing-custom-linux-scripts

Für Ihre eigenen Skripte mit Benutzer-ID legen Sie sie in /home/YOUR_NAME/bin ab. Denken Sie daran, dass Sie dieses Verzeichnis zuerst erstellen und das Terminal neu starten müssen, damit der Pfad automatisch von ~/.profile eingerichtet wird. Siehe: 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


Was ich weiß, weiß ich nicht

Ich denke darüber nach, einige meiner komplexeren Bash-Skripte in Ask Ubuntu mit Installations-Skripten auf github einzurichten. Hier sind ein paar Beispiele:

Ich denke, dass die Skripte in /usr/bin installiert werden sollten, das sich im $PATH befindet, aber ich bin mir über den richtigen Ort noch nicht sicher.

Kommentare (5)