Différences entre / bin, / sbin, / usr / bin, / usr / sbin, / usr / local / bin, / usr / local / sbin

284

J'ai six répertoires avec des fichiers de commande. Ce sont /bin, /sbin, /usr/bin, /usr/sbin, /usr/local/binet /usr/local/sbin.

Quelles sont les différences entre ceux-ci? Si j'écris mes propres scripts, où devrais-je les ajouter?


Apparenté, relié, connexe:


la source
1
Question connexe: unix.stackexchange.com/questions/8656/…
Gabriel Staples
@Keelan Votre question est proche d'une question que j'ai posée il y a un an + +: askubuntu.com/questions/830074/…
WinEunuuchs2Unix

Réponses:

349

Veuillez vous référer à la norme FHS (Filesystem Hierarchy Standard) pour Linux pour cela.

  • /bin: Pour les fichiers binaires utilisables avant le /usrmontage de la partition. Cette option est utilisée pour les fichiers binaires triviaux utilisés au tout début de l’initialisation ou ceux dont vous avez besoin pour le démarrage en mode mono-utilisateur. Pensez binaires comme cat, ls, etc.

  • /sbin : Idem, mais pour les fichiers binaires avec les privilèges superutilisateur (root) requis .

  • /usr/bin: Identique au premier, mais pour les fichiers binaires généraux du système .

  • /usr/sbin : Idem que ci-dessus, mais pour les fichiers binaires avec les privilèges superutilisateur (root) requis.


si j'écris mes propres scripts, où devrais-je les ajouter?

Aucune de ces réponses. Vous devez utiliser /usr/local/binou /usr/local/sbinpour les scripts disponibles à l'échelle du système. Le localchemin d'accès signifie qu'il n'est pas géré par les packages système (il s'agit d' une erreur pour les packages Debian / Ubuntu).

Pour les scripts définis par l' utilisateur , utilisez ~/bin(un dossier bin personnel dans votre répertoire personnel).

La FHS dit pour /usr/local:

Hiérarchie tertiaire pour les données locales, spécifiques à cet hôte . En règle générale a d' autres sous - répertoires, par exemple, bin/, lib/, share/.

Gertvdijk
la source
so / bin est l'endroit où tous les fichiers de base sont installés. comme ls, chat, pwd, etc? Donc, / usr / bin est l'endroit où se trouvent les applications installées par l'utilisateur? Quels sont quelques exemples de ce qui devrait être dans / usr / bin?
Patoshi a lu
1
Le fait de placer des scripts pose-t-il /bindes problèmes? J'ai déplacé mes scripts en fonction de votre réponse mais je suis toujours curieux
Rumesh
5
@RumeshSudhaharan vous ne devriez pas faire cela, car c'est géré par la gestion des paquets. Si un autre paquet veut également utiliser ce chemin, il écrasera votre fichier. Les fichiers contenus dans les packages ne peuvent jamais se chevaucher (du moins pour les référentiels officiels), vous êtes donc plus en sécurité lors de l'installation dans le chemin local. En outre, c'est juste pour votre commodité et votre sécurité. Sur un chemin local, vous ne pouvez pas gâcher le système de manière aussi mauvaise et vous ne pouvez pas remplacer accidentellement un fichier binaire du système.
gertvdijk
8
J'aime l'explication sur la page d'erreur:Severity:Serious Certainty:Certain
cutrightjm
1
J'ai mis des fichiers dans / usr / local / bin et je peux les exécuter, mais je ne peux pas les éditer, cela ls -lane montre rien
M. Reza Nasirloo
6

J'avais moi-même une question similaire il y a un an + +: Meilleur répertoire pour placer mes scripts bash?

Répertoires système pour les fichiers binaires

man hier(hiérarchie) répertorie tous les répertoires. Pour obtenir ceux réservés aux fichiers binaires, utilisez:

$ 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

Où mettre vos propres scripts?

Pour que tous les utilisateurs puissent accéder à vos scripts, vous pouvez les insérer /usr/local/bin. N'oubliez pas que vous devez avoir sudoaccès pour ajouter / modifier des fichiers ici. Voir: Existe - t-il un emplacement standard pour placer des scripts Linux personnalisés?

Pour vos propres identifiants d’utilisateur, mettez-les dans /home/YOUR_NAME/bin. N'oubliez pas que vous devez d'abord créer ce répertoire, puis relancer le terminal pour que le chemin soit automatiquement configuré par ~/.profile. Voir: Comment ajouter / home / nom d'utilisateur / bin à $ PATH?


Ce que je sais je ne sais pas

J'envisage de prendre certains de mes scripts bash plus complexes dans Ask Ubuntu et de les configurer avec des scripts d'installation github. Voici quelques exemples:

Je pense que les scripts doivent être installés dans /usr/bince qui est dans le $ PATH, mais je ne suis pas encore sûr de l'endroit approprié.

WinEunuuchs2Unix
la source
1
J'apprécie vos efforts, mais, à l'exception de la partie "Ce que je sais, je ne sais pas", vous avez répété la réponse de gertvdijk.
jeudi
1
@danzel Je pense que l'élément clé est la man hiersection à laquelle la réponse de gertvdijk n'a pas répondu. c'est-à-dire que vous pouvez obtenir la structure hiérarchique des répertoires dans la ligne de commande sans avoir à recourir à la lecture sur le Web (c'est-à-dire ici).
WinEunuuchs2Unix
1
c'est une information intéressante, je suis d'accord. Mais gertvdijk a déjà mentionné la norme de hiérarchie des systèmes de fichiers ( man hierextrait de l’OMI insuffisant sur le plan de l’information). Cependant, cela peut être mon opinion personnelle.
danzel
@danzel Je conviens que les sites Web ont une analyse beaucoup plus approfondie que celle qui figure sur nos disques durs. J'essaie seulement de souligner que l'information se trouve sur nos disques durs sans recourir à Internet. Outre le lien wikipedia cité est manquant /usr/X11R6/bin et /usr/local/binqui est inclus dans man heir.
WinEunuuchs2Unix
@ WinEunuuchs2Unix, dernier paragraphe; Pourquoi pas /usr/local/binpuisque vous n'êtes pas le gestionnaire de paquets?
Pacerier le