it-swarm-pt.tech

Mac OS X: locais convencionais onde os arquivos binários devem viver

Eu baixei um aplicativo que é um aplicativo de linha de comando, e quero colocá-lo em algum lugar onde eu possa executá-lo a partir da linha de comando sem ter que digitar o caminho explicitamente.

  1. Quais são os caminhos convencionais usados ​​para algo assim? /usr/bin? Existem opções diferentes, uma se eu quiser para todos os usuários e uma se eu quiser para apenas um usuário em particular, como minha conta de administrador?

  2. Ou devo colocá-lo em seu próprio diretório no diretório Applications e adicioná-lo ao caminho? Em caso afirmativo, qual arquivo controla onde o caminho está definido?

55
Jason S

Resposta principal: você provavelmente quer /usr/local/bin. Dependendo de quão recente é o seu macOS, talvez seja necessário atualizar seu $PATH padrão. Veja abaixo para mais detalhes.

ATUALIZAÇÃO 12-01-2018 Em algum momento, desde que escrevi minha resposta original, a Apple alterou seu $PATH padrão. Como resultado, muito do que eu digo abaixo é irrelevante para os Macs recentes. Se você digitar echo $PATH em um terminal e /usr/local/bin for o primeiro, ignore todos os itens abaixo sobre como alterar $PATH.

Resposta original

Macs são incomuns a esse respeito. A variável $PATH padrão para um usuário normal se parece com isto:

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

Ao colocar /usr/local/bin depois de /usr/bin e /bin, o Mac atualiza o sistema usual. Normalmente, você pode colocar algo em /usr/local/bin (digamos um segundo interpretador Perl, compilado de alguma forma não-padrão), e então um usuário comum irá acessar o personalizado em vez do sistema em primeiro lugar. Isso é bom. Os usuários podem obter variantes, mas o sistema permanece puro. Dado o $PATH padrão da Apple, no entanto, os itens em /usr/bin ou /bin serão encontrados antes de qualquer coisa em /usr/local/bin. (Isso basicamente anula o propósito de instalar, por exemplo, o Perl personalizado em /usr/local/bin.)

Para corrigir isso, você pode alterar o $PATH do usuário comum editando o arquivo .profile no diretório pessoal do usuário. (Esse arquivo pode não existir, se você tiver uma nova instalação. Nesse caso, crie-o.)

Semi-relacionado: Homebrew oferece excelente gerenciamento de pacotes para Macs. Por padrão, o Homebrew instala o software em /usr/local, mas o faz de uma maneira que facilita muito a remoção de itens e o retorno a um estado Vanilla posteriormente.

47
Telemachus

/usr/local/bin e /usr/local/sbin valem bem a pena adicionar ao seu caminho, já que muitos makefiles para compilações de fontes são instalados por padrão.

Se você usar MacPorts , vale a pena adicionar /opt/local/bin e /opt/local/sbin também.

A melhor maneira de fazer isso é adicionar

export PATH=/usr/local/bin:/usr/local/sbin:/opt/local/bin:/opt/local/sbin:$PATH

para o arquivo .bashrc em seu diretório home (que está oculto, portanto, a CLI é a melhor maneira de fazer isso) ou, se você quiser alterar o caminho do sistema, adicione a mesma linha a /etc/bashrc (não oculto), mas você precisará Sudo para fazer isso.

Se você não tiver um .bashrc na casa de qualquer usuário, poderá criar um e adicionar essa linha a ele, mas lembre-se de alterar as permissões no arquivo criado para torná-lo legível pelo usuário em questão (obviamente, não é relevante se você está fazendo isso para o seu próprio perfil).

O $PATH no final acrescenta o caminho padrão do sistema para o que você colocou antes. Note que o sistema procura por binários na ordem dos caminhos dados, então se você instalar um binário em /usr/local ou /opt/local que também é instalado por padrão no sistema, as versões que você instala serão encontradas primeiro, o que pode (embora raramente) chatear coisas. Vale a pena ficar atento.

Boa informação é aqui .

Devo observar que o acima assume que você está usando Bash para o Shell, que é o padrão em Mac OS X v10.4 (Tiger) e Mac OS X v10.5 (Leopard), mas não em sistemas anteriores, que usavam tcsh, que tem uma sintaxe diferente.

Espero que isso ajude ...

9
avstrallen

Eu costumo ir com /usr/local. Aqui está ma boa explicação porque , que se refere a Filesystem Hierarchy Standard (FHS) . ⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢ ⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢, que por sua vez diz sobre /usr/local:

Hierarquia terciária para dados locais, específicos para este host. Tipicamente possui subdiretórios adicionais, por exemplo, bin, lib, share.⁢

7
John Topley