web-dev-qa-db-fra.com

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

J'ai six répertoires avec des fichiers de commande. Il s'agit de /bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin et /usr/local/sbin.

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


En relation:

264
Keelan

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

  • /bin: pour les fichiers binaires utilisables avant que la partition /usr ne soit montée. Cette option est utilisée pour les fichiers binaires triviaux utilisés au tout début du démarrage ou ceux dont vous avez besoin pour le démarrage en mode mono-utilisateur. Pensez aux fichiers binaires tels que cat, ls, etc.

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

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

  • /usr/sbin: Comme 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/bin ou /usr/local/sbin pour les scripts disponibles à l'échelle du système. Le chemin local signifie qu'il n'est pas géré par les paquets système (il s'agit d'une erreur ne erreur pour les paquets Debian/Ubuntu).

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

La FHS dit pour /usr/local:

Hiérarchie tertiaire pour les données locales, spécifique à cet hôte . A généralement des sous-répertoires supplémentaires, par exemple, bin/, lib/, share/.

328
gertvdijk

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

Répertoires système pour les fichiers binaires

man hier (hierarchy) 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 mettre dans /usr/local/bin. Gardez à l'esprit que vous avez besoin de Sudo access pour ajouter/modifier des fichiers ici. Voir: Existe-t-il un emplacement standard pour placer des scripts Linux personnalisés?

Pour vos propres scripts d’identification 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 d'accès 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 Demandez à Ubuntu et de les configurer avec des scripts d'installation sur github. Voici quelques exemples:

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

5
WinEunuuchs2Unix