Questão Diferenças entre / bin, / sbin, /usr/bin/usr/sbin/usr/local/bin/usr/local/sbin


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 estes? Se eu estou escrevendo meus próprios scripts, onde devo adicioná-los?


Relacionado:


223
2018-06-14 07:13


origem


Questão relacionada: unix.stackexchange.com/questions/8656/… - Gabriel Staples
@Keelan A sua pergunta está perto de uma pergunta que publiquei há um ano: askubuntu.com/questions/830074/… - WinEunuuchs2Unix


Respostas:


Por favor, consulte o Padrão de Hierarquia do Sistema de Arquivos (FHS) para Linux por esta.

  • /bin : Para binários utilizáveis ​​antes do /usr partição está 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, lsetc.

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

  • /usr/bin : Igual ao primeiro, mas para binários gerais para todo o sistema.

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


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

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

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

A FHS diz para /usr/local:

Hierarquia terciária para dados locais específico para este host. Normalmente, tem mais subdiretórios, por exemplo, bin/, lib/, share/.


293
2018-06-14 07:17



então / bin é onde todos os arquivos principais são instalados. como ls, gato, pwd, etc? Então, / usr / bin é onde os aplicativos instalados pelo usuário estão? Quais são alguns exemplos do que deve estar em / usr / bin? - Patoshi パトシ
Colocar scripts em /bin causar algum problema? Eu mudei meus scripts de acordo com sua resposta, mas ainda estou curioso - Rumesh
@RumeshSudhaharan você não deve fazer isso, porque é gerenciado pelo gerenciamento de pacotes. Se qualquer outro pacote também quiser usar esse caminho, ele substituirá seu arquivo. Arquivos em pacotes nunca podem se sobrepor (pelo menos para repositórios oficiais), então você está mais seguro ao instalar no caminho local. Além disso, é apenas para sua própria conveniência e segurança. Em um caminho local, você não pode atrapalhar o sistema de maneira tão ruim e não pode substituir acidentalmente um binário do sistema. - gertvdijk
Eu gosto da explicação na página de erro: Severity:Serious Certainty:Certain - cutrightjm
Eu coloquei alguns arquivos em / usr / local / bin e posso executá-los, mas não posso editá-los, ls -la não mostra nada - M. Reza Nasirloo


Eu tive uma pergunta semelhante a mim mesmo um ano atrás: Melhor diretório para colocar meus scripts 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 /usr/local/bin. Tenha em mente que você precisa sudo acesso para adicionar / alterar arquivos aqui. Vejo: Existe um local padrão para colocar scripts personalizados do Linux?

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 ~/.profile. Vejo: Como adicionar / home / username / bin a $ PATH?


O que eu sei não sei

Estou pensando em pegar alguns dos meus scripts bash mais complexos Pergunte ao Ubuntu e configurando-os com scripts de instalação github. Aqui estão alguns exemplos:

Eu pensar os scripts devem ser instalados em /usr/bin que está no $ PATH, mas ainda não tenho certeza sobre o local apropriado.


3
2018-06-11 23:44



Eu aprecio o seu esforço, mas, exceto a parte "O que eu sei que não sei", você repetiu a resposta de gertvdijk. - danzel
@danzel Eu acho que a parte chave é o man hier seção que a resposta de gertvdijk não abordou. isto é, você pode obter a estrutura hierárquica do diretório na linha de comando sem ter que recorrer a lê-lo na web (ou seja, aqui). - WinEunuuchs2Unix
isso é informação interessante, eu concordo. Mas gertvdijk já mencionou o Padrão de Hierarquia do Sistema de Arquivos (que man hier é um trecho informativo insuficiente da IMO). No entanto, isso pode ser minha opinião pessoal. - danzel
@danzel Eu concordo que os sites têm uma análise muito mais aprofundada do que a que está nos nossos discos rígidos. Estou apenas tentando apontar que a informação está em nossos discos rígidos sem recorrer à Internet. Além do link da wikipedia citado é ausência de  /usr/X11R6/bin e /usr/local/bin que está incluído no man heir. - WinEunuuchs2Unix