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 /bin
e /sbin
.
/usr/bin
conté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 PATH
variá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/games
sã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 /usr
pode 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 /usr
diretório geral , cada uma delas terá sua própria /usr/local
montagem dentro do comum /usr
.
Por fim, dê uma olhada no PATH
meu 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.