FHS descomplicado em menos de 2 minutos
Que bagunça!
Essa foi minha reação quando vi pela primeira vez a estrutura de diretórios FHS. Analogamente à alegoria da caverna de Platão, esses diretórios para mim eram como sombras feias vindas de fora da caverna, projetadas na parede. Por diversas vezes essas sombras me impediram de sair da "minha caverna", então decidi lançar um pouco de luz à essa matéria.
Primeiramente, mas não menos importante é necessário lembrar: FHS é uma convenção mas...
Há um lugar especial no inferno para aqueles que ignoram convenções. (Lispector, SysAdmin)
/bin/
Aqui ficam todos os principais binários do sistema. Aprender a usá-los primeiramente irá garantir que caso você tenha um crash no sistema, onde somente esses binários estão disponíveis, você possa usá-los para a recuperaração. Como exemplo, lembre-se que se você só consegue editar textos no vi ou vim terá que fazê-lo no nano ou até mesmo no sed.
/sbin/
Aqui ficam os binários de sistema que requerem permissão de root para serem utilizados. Esses binários fazem diversas coisas como carregar módulos de kernel, gerenciar partições de disco e gerenciar daemons de sistema;
/lib/ and /lib64/
Aqui ficam as bibliotecas compartilhadas entre os binários em /bin/ e /sbin/.
/usr/
Aqui você tem os subdiretórios /usr/bin/ e /usr/lib/ respectivamente como sendo os binários não essenciais ao sistema (mas sim ao usuário) e suas bibliotecas compartilhadas.
Também em /usr/ nós temos /local/bin/ que contém softwares compilados "on the fly" para a arquitetura da máquina atual. Esse diretório é importante para conter esses arquivo e evitar conflitos com versões oriundas de gerenciamento de pacotes.
A variável de ambiente $PATH
Todos os binários do sistema são listados na sua variável de ambiente $PATH, como você pode observar digitando:
cat $PATH
É por conta da variável de ambiente $PATH que você pode chamar um binário de qualquer lugar do sistema através da interface CLI.
/etc/
Esse diretório não significa etcetera mas um acrônimo para Editable Text Config. Aqui todas as configurações para esses binários ficarão. Você gostaria de configurar algum software? Aqui é o lugar!
/home/
Não há lugar como home! Aqui cada usuário de sistema terá um subdiretório e todas os seus arquivos ficarão aqui.
/boot/
Todos os arquivos necessário para iniciar o sistema ficam aqui.
/dev/
Aqui cada dispositvo de hardware é mapeado para um arquivo. Nós sabemos que há diversos fabricantes de hardware de diferentes formas e que todos esses hardwares precisam interagir com o sistema operacional. O fabricante de hardware cria um software chamado "driver" que mapeia como o sistema operacional pde utilizar o hardware. Então o sistema operacional cria uma forma de acessá-lo mapeando o acesso ao driver através desses arquivos dispostos em /dev/
/opt/
Contém software opcional ou adicional para o sistema e dificilmente você terá que interagir com esse diretório. A depender do estilo de software desenvolvido alguns players e empresas o utilizam para fazer deploy.
/var/
Contem os arquivos que mudam de tamanho durante o uso do sistema operacional. Aqui coisas como logs, caches e bancos de dados serão dispostos;
/tmp/
Esse diretório é utilizado como diretório temporário. Algum software pode utilizá-lo para processamento de arquivos para download ou afins. Todo conteúdo desse diretório será apagado a cada reinicialização do sistema;
/proc/
Aqui o kernel do sistema irá criar um sistema de arquivos ilusionário "on the fly" para manter acessíveis informações dos processos que estão rodando no momento;