No Linux, os diferentes locais geralmente, quando bem mantidos, espelham alguma lógica. Por exemplo:
-
/bincontém as ferramentas mais básicas (programas) -
/sbincontém os programas de administração mais básicos
Ambos contêm os comandos elementares usados pela inicialização e solução de problemas fundamentais. E aqui você vê a primeira diferença. Alguns programas não devem ser usados por usuários comuns.
Em seguida, dê uma olhada em /usr/bin . Aqui você deve encontrar uma maior escolha de comandos (programas), geralmente mais de 1000 deles. Eles são ferramentas padrão, mas não tão essenciais quanto os 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 variável PATH apontando para o executáveis. Também introduz clareza. O que quer que seja deve ser executável.
Veja 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 contendo os comandos que eu posso chamar diretamente (ou seja, não por seus caminhos, mas pelos nomes de seus executáveis).
-
/home/tomas/biné meu diretório privado na minha pasta pessoal para meus executáveis privados. -
/usr/local/binexplicarei separadamente abaixo. -
/usr/biné descrito acima. -
/bintambém é descrito acima. -
/usr/local/gamesé uma combinação de/usr/local(a ser explicado abaixo) e jogos -
/usr/gamessão jogos. Para não serem misturados com executáveis de utilitário, 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 entendê-lo, você precisa saber que a pasta /usr pode ser compartilhada por várias 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, ao contrário dos que estão em /bin , portanto, o local pode ser montado em estágios posteriores do processo de inicialização. Ele também pode ser montado de maneira somente leitura. /usr/local/bin , por outro lado, é para os programas instalados localmente e precisa ser gravável. Assim, enquanto muitas máquinas de rede podem compartilhar o diretório geral /usr , cada uma delas terá seu próprio /usr/local montado dentro da comum /usr .
Por fim, dê uma olhada no PATH do 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 admin do tipo/usr/local -
/usr/local/bin, que são os mesmos que o usuário comum pode usar. Novamente, o tipo deles pode ser descrito como/usr/local. -
/usr/sbinsão os utilitários de administração não essenciais. -
/usr/binsão a administração não essencial e utilitários de usuário regulares. -
/sbinsão as ferramentas administrativas essenciais. -
/binsão as ferramentas essenciais do administrador e do usuário regular.