Antes de hoje, eu usei o terminal em uma extensão limitada de entrada e saída de diretórios e alteração das datas dos arquivos usando o touch
comando Eu havia percebido toda a extensão do terminal depois de instalar um script divertido no Mac e ter que chmod 755
usar o arquivo para torná-lo executável posteriormente.
Eu gostaria de saber o que /usr/local/bin
é, no entanto. /usr/
, Presumo, é o usuário do computador. Eu não tenho certeza por que /local/
está lá, no entanto. Obviamente, representa o computador local, mas como ele está no computador (ou servidor), seria realmente necessário? Não /usr/bin
ficaria bem?
E o que é /bin
? Por que essa área geralmente é usada para instalar scripts no terminal?
Fechar.
O Unix começou como um sistema operacional multiusuário, então não é "o usuário", é "os usuários ", no plural.
Antes do lançamento do AT&T Unix System V Versão 4 (SVR4) em 1988, com suas ferramentas de gerenciamento de usuário padronizando a criação de diretórios pessoais
/home
, a localização convencional era./usr
¹ Seu$HOME
diretório pode estar/usr/jfw
em uma caixa do System III ./usr
também continha, então como agora,/usr/bin
,/usr/lib
, etc. A experiência mostrou que segregar os diretórios home era boa prática de gestão do sistema, assim com a/home
mudança de política em SVR4, deixou para trás tudo o que agora pensar em como pertencendo a/usr
./usr
ainda havia um bom motivo para manter o nome: o que foi deixado para trás eram arquivos que não precisavam estar disponíveis até que o sistema fosse inicializado o suficiente para suportar o uso interativo normal. Ou seja, o que foi deixado para trás foram as partes do sistema operacional focadas no usuário . Isso significava que/usr
poderia estar em um volume físico diferente, o que era bom nos dias de 92 MB de unidades de disco rígido do tamanho de máquinas de lavar .Os primeiros sistemas Unix tiveram o cuidado de manter os arquivos principais do sistema operacional
/usr
ausentes, para que você ainda pudesse inicializar no modo de usuário único², mesmo que o/usr
volume fosse desmontável por algum motivo. O volume raiz continha ferramentas suficientes para colocar o/usr
volume novamente online.Vários tipos de Unix agora desconsideram esse antigo princípio de design, já que até os pequenos sistemas embarcados têm espaço suficiente para os arquivos de volume raiz tradicionais e todos
/usr
em um único volume.³ Red Hat Enterprise Linux, Solaris e Cygwin fazem uma ligação simbólica/bin
para/usr/bin
e/lib
para/usr/lib
que não haja mais qualquer diferença entre esses diretórios.Sim. Refere-se ao fato de que os arquivos abaixo
/usr/local
devem ser específicos para esse sistema único. Arquivos que são genéricos de qualquer maneira devem estar em outro lugar.Isso também tem raízes na maneira como os sistemas Unix eram comumente usados décadas atrás, quando tudo isso era padronizado. Novamente, os discos rígidos da época eram volumosos, muito caros e pouco armazenados pelos padrões de hoje. Para economizar dinheiro e espaço em discos, um laboratório de computação cheio de caixas Unix costumava compartilhar a maior parte do
/usr
NFS ou algum outro protocolo de compartilhamento de arquivos de rede, de modo que cada caixa não precisava ter sua própria cópia redundante. caixa iria para baixo/usr/local
, o que seria um volume separado de/usr
.Essa herança histórica é o motivo pelo qual ainda é o padrão para a maioria dos softwares Unix de terceiros instalarem
/usr/local
quando instalados manualmente. A maioria desses softwares permite que você instale o pacote em outro lugar, mas ao fazer a não escolha, você obtém o padrão seguro, que não interfere em outros locais de instalação comuns com propósitos mais específicos.Existem boas razões para instalar o software em outro lugar. A equipe do macOS da Apple faz isso quando cria, digamos, a
bash
partir do código-fonte GNU Bash . Eles usam/
como prefixo de instalação, substituindo o/usr/local
padrão, para que o Bash termine/bin
.Outro exemplo é o modo como os sistemas Linux mais antigos segregaram seu software de GUI
/usr/X11R6
, para mantê-lo separado da linha de comando tradicional e docurses
software baseado em. Isso foi feito simplesmente substituindo o/usr/local
prefixo padrão por/usr/X11R6
.⁵É a abreviação de "binário", que neste contexto significa "um arquivo que não é texto simples". Muitos desses arquivos são executáveis em uma caixa Unix, portanto esses dois termos se tornaram sinônimos em alguns círculos. ("Por favor, crie um binário para o RHEL 7, Fred.")
Arquivos de texto em uma caixa de Unix viver em outro lugar:
/etc
,/usr/include
,/usr/share
, etc.Era uma vez, mesmo os scripts de shell - que são arquivos de texto sem formatação - eram mantidos fora dos
bin
diretórios, mas essa linha também ficou embaçada. Hoje, osbin
diretórios normalmente contêm qualquer tipo de arquivo executável, estritamente "binário" ou não.⁶Notas de rodapé e digressões :
A natureza primitiva das ferramentas de gerenciamento de usuários anteriores ao SVR4 significava que o
HOME=/usr/$NAME
esquema era meramente documentado como uma convenção, e não imposto por ferramentas de software como padrão.Você pode ver isso na página 4-8 do " Guia do Administrador do Sistema da AT&T Unix System V Versão 3.2 : aqui você vê a AT&T recomendando o
/usr/$NAME
esquema antigo na última versão principal do Unix antes da saída do SVR4.Nos sistemas Unix mais antigos, era bastante comum os administradores de sistemas escolherem um esquema diferente que fazia mais sentido para eles. Pessoas sendo pessoas, isso significava que muitos esquemas diferentes foram inventados.
Um esquema que me deparei antes
/home/$NAME
se tornou o padrão/u/$NAME
.Outro sistema que eu usei no início de 1990 tinha tantos usuários que eles não poderiam caber todos os diretórios home em um único volume físico, por isso, eles usaram um esquema como
/u1/$NAME
,/u2/$NAME
e assim por diante, se bem me lembro. Em qual disco o diretório inicial foi encerrado era simplesmente uma questão de qual deles tinha espaço no momento em que sua conta foi criada.Você pode inicializar uma caixa do macOS no modo de usuário único mantendo pressionada Cmd-Senquanto é inicializada. Solte quando a tela ficar preta e você vir um texto em cinza claro. É como rodar no Terminal, mas ocupa toda a tela porque a GUI ainda não foi iniciada.
Cuidado, você está correndo como
root
.Digite "exit" no prompt raiz de usuário único para sair do modo de usuário único e continuar a inicialização no modo de GUI para vários usuários.
Os sistemas operacionais Unixy que ainda parecem manter arquivos críticos do modo de usuário único fora de casa
/usr
podem não o fazer atualmente. Uma vez tornei uma caixa do FreeBSD 9 impossível de inicializar, movendo-me/usr
para um volume ZFS. Eu esqueci que os recursos do ZFS-on-root não chegaram até o FreeBSD 10, criando um Catch 22 : o sistema operacional precisava de arquivos/usr
para montar/usr
!Isso já era ruim o suficiente, mas se o FreeBSD 9 ainda mantivesse suas coisas de inicialização de usuário único
/usr
, eu poderia ter corrigido isso. Como ele não inicializava nem no modo de usuário único por/usr
ser desmontável, claramente essa tradição havia sido violada de alguma forma. Eu tive que inicializar a partir de um CD de resgate para recuperar o sistema novamente.Também é aqui que chegamos
/usr/share
: ele segrega arquivos que podem ser compartilhados mesmo entre caixas Unix com diferentes tipos de processadores. Normalmente, arquivos de texto: páginas de manual, dicionário, etc."X11R6" se refere à versão do X Window System subjacente às GUIs do Linux no momento em que essa convenção era predominante. Os sistemas Linux geralmente paravam de segregar o software da GUI na época em que o X11R6 foi substituído pelo X.Org .
Os sistemas Unix originais mantinham seus scripts de shell principais
/etc
para evitar misturá-los com os verdadeiros binários/bin
.fonte
Eu recomendaria consultar a Wikipedia para questões relacionadas à estrutura em geral, abordará o básico.
Para responder sua pergunta diretamente, no entanto:
É por isso que você tende a encontrar uma estrutura semelhante entre os dois; / usr / {, local /} {bin, sbin, lib}. Sendo novo no shell, esse pouco com o {} é uma expansão do shell. Tente executar
do seu shell local para ver como ele funciona.
fonte
/usr/local/bin
mostra as raízes no estilo UNIX do mais recente Mac OS (seu BSD baseado lá).Isso mudou desde as primeiras implementações do UNIX para Linux e BSD, mas a convenção permaneceu. Agora,
/usr/bin
seria para programas e bibliotecas "principais" ou principais, onde/usr/local/bin
seria para programas e bibliotecas complementares e não críticas.fonte
/usr/nzwulfin
por padrão. Outro esquema comum. antes que o/home
esquema SVR4 assumisse, era/u
. Um sistema que usei desde o início tinha tantos usuários que precisavam de vários discos físicos para armazenamento de arquivos do usuário, então eles tinham coisas assim/u/d5/tangent
./usr/local/bin
é o local padrão mais popular para arquivos executáveis, especialmente os de código aberto.No entanto, essa é uma péssima escolha, pois, nos sistemas Unix,
/usr
foi padronizada no início dos anos 90 para conter uma hierarquia de arquivos que pertencem ao sistema operacional e, portanto, pode ser compartilhada por vários sistemas usando esse sistema operacional.Como esses arquivos são estáticos, o
/usr
sistema de arquivos pode ser montado como somente leitura./usr/local
está derrotando esse padrão, pois é por design local, portanto, não é compartilhado; portanto, ele precisa ser lido / gravado para permitir a compilação local e não faz parte do sistema operacional. Pena que algo como/opt/local
não foi escolhido em vez disso ...fonte
Eu recomendo que você use
/usr/local
para programas comerciais que você pode instalar, como o Mathematica. Coloque-o em sua própria partição quando você configurar. Quando você atualiza seu sistema operacional, essa partição não será perturbada e você não precisará reinstalar o conteúdo. Portanto, use-o para coisas que você deseja manter entre as atualizações do sistema operacional.Separadamente, certifique-se de fornecer
/home
sua própria partição por esse motivo também.fonte
Essa resposta também pode ser útil.
/ usr / local
A idéia original por trás disso
/usr/local
era ter um diretório separado ('local') '/ usr' em todas as máquinas/usr
, o que poderia ser montado somente para leitura em outro lugar. Ele copia a estrutura de/usr
.Atualmente,
/usr/local
é amplamente considerado um bom lugar para manter programas auto-compilados ou de terceiros. A/usr/local
hierarquia é para ser usada pelo administrador do sistema ao instalar o software localmente. Ele deve ser protegido contra substituição quando o software do sistema for atualizado.Pode ser usado para programas e dados compartilhados entre um grupo de hosts, mas não encontrados em
/usr
. O software instalado localmente deve ser colocado dentro,/usr/local
e não a/usr
menos que esteja sendo instalado para substituir ou atualizar o software/usr
.fonte