No Linux, os diferentes locais geralmente, quando bem conservados, refletem alguma lógica. Por exemplo.:
/bin contém as ferramentas mais básicas (programas)
/sbin contém os programas de administração mais básicos
Ambos contêm os comandos elementares usados na inicialização e na solução de problemas fundamentais. E aqui você vê a primeira diferença. Alguns programas não devem ser usados por usuários regulares.
Então dê uma olhada /usr/bin. Aqui você deve encontrar uma grande variedade de comandos (programas), geralmente mais de 1000 deles. Eles são ferramentas padrão, mas não tão essenciais quanto as de /bine /sbin.
/usr/bincontém os comandos, enquanto os arquivos de configuração residem em outro lugar. Isso separa as entidades funcionais (programas) e suas configurações e outros arquivos, mas em termos de funcionalidade do usuário, isso é útil, pois ter os comandos não misturados com qualquer outra coisa permite o uso simples da PATHvariável que aponta para os executáveis. Também introduz clareza. O que quer que seja deve ser executável.
Dê uma olhada no meu PATH,
$ echo "$PATH" | perl -F: -anlE'$,="\n"; say @F'
/home/tomas/bin
/usr/local/bin
/usr/bin
/bin
/usr/local/games
/usr/games
Existem exatamente seis locais que contêm os comandos que eu posso chamar diretamente (ou seja, não pelos caminhos, mas pelos nomes dos executáveis).
/home/tomas/bin é o meu diretório privado na minha pasta pessoal para os meus executáveis particulares.
/usr/local/bin Vou explicar separadamente abaixo.
/usr/bin está descrito acima.
/bin também é descrito acima.
/usr/local/gamesé uma combinação de /usr/local(a ser explicada abaixo) e jogos
/usr/gamessão jogos. Para não serem misturados com os executáveis de utilitários, eles têm seus locais separados.
Agora para /usr/local/bin. Este é um pouco escorregadio e já foi explicado aqui: O que é / usr / local / bin? . Para entender, você precisa saber que a pasta /usrpode ser compartilhada por muitas máquinas e montada a partir de um local de rede. Os comandos não são necessários na inicialização, como observado anteriormente, diferentemente dos apresentados /bin, portanto, o local pode ser montado nos estágios posteriores do processo de inicialização. Também pode ser montado em modo somente leitura. /usr/local/bin, por outro lado, é para os programas instalados localmente e precisa ser gravável. Portanto, embora muitas máquinas de rede possam compartilhar o /usrdiretório geral , cada uma delas terá sua própria /usr/localmontagem dentro do comum /usr.
Por fim, dê uma olhada no PATHmeu usuário root:
# echo "$PATH" | perl -F: -anlE'$,="\n"; say @F'
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
Ele contém estes:
/usr/local/sbin, que contém os comandos de administrador do tipo /usr/local
/usr/local/bin, que são os mesmos que o usuário comum pode usar. Novamente, seu tipo pode ser descrito como /usr/local.
/usr/sbin são os utilitários de administração não essenciais.
/usr/bin são a administração não essencial e utilitários regulares do usuário.
/sbin são as ferramentas administrativas essenciais.
/bin são as ferramentas essenciais do administrador e do usuário comum.