Por que existem tantos lugares para colocar um binário no Linux? Existem pelo menos estes cinco:
/bin/
/sbin/
/usr/bin/
/usr/local/bin/
/usr/local/sbin/
E na caixa do meu escritório, não tenho permissões de gravação para algumas delas.
Que tipo de binário entra em qual desses bin
s?
filesystems
binary
lazer
fonte
fonte
/usr/sbin/
.~/bin/
para coisas pessoais./bin
foi mesclado/usr/bin
e/sbin
mesclado com/usr/sbin
- consulte The Case for the / usr Merge ./usr/local/bin
?Respostas:
/bin
(e/sbin
) foram projetados para programas que precisavam estar em uma pequena/
partição antes da/usr
montagem de partições maiores etc. Hoje em dia, serve principalmente como local padrão para programas importantes/bin/sh
, embora a intenção original ainda possa ser relevante para, por exemplo, instalações em pequenos dispositivos embarcados./sbin
, diferentemente de/bin
, é para programas de gerenciamento de sistema (normalmente não utilizados por usuários comuns) necessários antes da/usr
montagem./usr/bin
é para programas de usuário normal gerenciados por distribuição.Existe um relacionamento
/usr/sbin
com o mesmo/usr/bin
que o/sbin
necessário/bin
./usr/local/bin
é para programas de usuário normais não gerenciados pelo gerenciador de pacotes de distribuição, por exemplo, pacotes compilados localmente. Você não deve instalá-los/usr/bin
porque futuras atualizações de distribuição podem modificá-las ou excluí-las sem aviso prévio./usr/local/sbin
, Como você provavelmente pode adivinhar, neste ponto, é/usr/local/bin
como/usr/sbin
a/usr/bin
.Além disso, existe também o
/opt
que é para pacotes de não distribuição monolíticos, embora antes de serem adequadamente integrados várias distribuições colocassem o Gnome e o KDE lá. Geralmente, você deve reservá-lo para pacotes de terceiros grandes e mal comportados, como o Oracle.fonte
~/bin
e adicione esse diretório ao seu PATH como usuário ... Obrigado pela observação, eu apaguei meu comentário seriamente desatualizado.PATH
variável do sistema , eecho $PATH
para mim mostra/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
, o que significa que os executáveis/usr/local/bin
têm precedência sobre os/usr/bin
que têm precedência sobre os que estão dentro/bin
.Eu recomendo dar uma olhada na página de manual da hierarquia do sistema de arquivos:
O qual também está disponível online, por exemplo: http://linux.die.net/man/7/hier
fonte
A entrada Standard da hierarquia do sistema de arquivos na Wikipedia me ajudou a responder a mesma pergunta quando a tive, além de ter uma tabela muito explicativa.
Trecho da página 1 :
1 Recuperado em 19 de junho de 2019; permalink .
fonte
Os
sbin
diretórios contêm programas que geralmente são apenas administração do sistema. Os programas para usuários regulares nunca devem entrar neles.Alguns programas são necessários durante a inicialização e terminam em
/bin/
ou/sbin/
. Eles devem estar disponíveis antes da montagem dos sistemas de arquivos. Coisas comomount
, efsck
que são necessárias para verificar e montar sistemas de arquivos, devem estar lá.A maioria dos programas empacotados termina em
/usr/bin/
e/usr/sbin/
. Eles podem estar em um sistema de arquivos diferente do sistema de arquivos raiz. Em alguns casos, eles podem estar em uma unidade montada em rede.Programas e scripts locais pertencem a
/usr/local/bin/
e/usr/local/sbin/
. Isso os identifica como claramente não padronizados e possivelmente disponíveis apenas no site.Para obter mais explicações, tente executar o comando
man hier
que deve fornecer uma descrição da hierarquia recomendada do sistema de arquivos para sua distribuição. Você também pode querer ler sobre a Hierarquia do sistema de arquivos na Wikipediafonte
Na década de 1970,
UNIX
havia todos os executáveis oficiais/bin
e/usr/bin
era um local abaixo dos diretórios pessoais dos usuários (por exemplo/usr/dmr
) que estava disponível para qualquer usuário armazenar seus próprios binários que também poderiam ter interesse para outros.O resultado dessa abertura
/usr/bin
foi um quintal inútil de software não documentado e, portanto,Stephen Bourne
escreveu umcron script
que verificava novos binários todas as noites e removeu todos os binários que não tinham uma documentação ou que foram atualizados sem atualizar sua documentação também.No final da década de 1970,
/usr/bin
foi integrado à distribuição básica do sistema operacional e as pessoas começaram a usar/usr/local/bin
para os propósitos da abertura anterior/usr/bin
.Depois de um tempo, os administradores do sistema costumavam
/usr/local/bin
armazenarnon-local
software importado da rede (por exemplo, a USENET) e, como as empresas UNIX não gostavam de repetir o mesmo erro que/usr/bin
ocorreu novamente, houve uma conferência de hierarquia de sistemas de arquivos em 1987, onde todas as empresas UNIX concordaram. desistir/usr/local/bin
e usar em seu/opt/<vendor>/bin
lugar.Infelizmente, as distribuições Linux não seguiram essa decisão ....
fonte
/opt
e não sobre o UNIX, mas sobre o Linux. É como responder "Por que os carros têm 4 rodas?" com "As bicicletas têm 2! Infelizmente, os carros não". o que não ajuda o OP a entender por que os carros têm 4.