Diferenças entre / bin, / sbin, /usr/bin/usr/sbin/usr/local/bin/usr/local/sbin

217

Eu tenho seis diretórios com arquivos de comando. Esses são /bin , /sbin , /usr/bin , /usr/sbin , /usr/local/bin e /usr/local/sbin .

Quais são as diferenças entre eles? Se eu estou escrevendo meus próprios scripts, onde devo adicioná-los?

Relacionados:

por Keelan 14.06.2013 / 09:13

2 respostas

287

Por favor, consulte o Filesystem Hierarchy Standard (FHS) para Linux para isso.

  • /bin : para binários utilizáveis antes da partição /usr ser montada. Isso é usado para binários triviais usados no estágio de inicialização muito cedo ou aqueles que você precisa ter disponíveis no modo de usuário único de inicialização. Pense em binários como cat , ls , etc.

  • /sbin : mesmo, mas para scripts com privilégios de superusuário (root) necessários .

  • /usr/bin : O mesmo que primeiro, mas para binários gerais do sistema .

  • /usr/sbin : O mesmo que acima, mas para scripts com privilégios de superusuário (root) necessários.

  

se eu estou escrevendo meus próprios scripts, onde devo adicionar estes?

Nenhuma das opções acima. Você deve usar /usr/local/bin ou /usr/local/sbin para scripts disponíveis em todo o sistema. O caminho local significa que ele não é gerenciado pelos pacotes do sistema (isso é um erro para pacotes Debian / Ubuntu).

Para scripts com escopo no usuário , use ~/bin (uma pasta bin pessoal em seu diretório pessoal).

O FHS diz para /usr/local :

  

Hierarquia terciária para dados locais, específicos para este host . Geralmente, há mais subdiretórios, por exemplo, bin/ , lib/ , share/ .

    
por gertvdijk 14.06.2013 / 09:17
0

Eu mesmo tive uma pergunta semelhante há um ano: Melhor diretório para colocar meu scripts do bash?

Diretórios do sistema para binários

man hier (hierarquia) lista todos os diretórios. Para obter os apenas para binários, use:

$ 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

Onde colocar seus próprios scripts?

Para todos os usuários acessarem seus scripts, você pode colocá-los em /usr/local/bin . Lembre-se de que você precisa do sudo access para adicionar / alterar arquivos aqui. Veja: Existe um local padrão para colocar scripts Linux personalizados?

Para seus próprios scripts de ID de usuário, coloque-os em /home/YOUR_NAME/bin . Tenha em mente que você tem que criar este diretório primeiro e relançar o terminal para obter o caminho configurado automaticamente por ~/.profile . Consulte: Como adicionar / home / username / bin a $ PATH?

O que eu sei que não sei

Estou pensando em pegar alguns dos meus scripts bash mais complexos em Ask Ubuntu e configurá-los com scripts de instalação em github . Aqui estão alguns exemplos:

Eu acho que os scripts devem estar instalados em /usr/bin , que está no $ PATH, mas ainda não tenho certeza do lugar apropriado.

    
por WinEunuuchs2Unix 12.06.2018 / 01:44