Header Ads

O que é Unix PATH e como você adiciona programas a ele?

O PATH do Unix é uma variável de ambiente que informa ao shell quais diretórios ele deve procurar ao emitir comandos. Você pode pensar nisso como uma lista de pastas de aplicativos ou arquivos de programas.

O que o PATH faz?

Se você quisesse executar um binário em sua pasta atual, você &’ teria que fornecer um caminho relativo, como:

 ./ comando [args] 

Mas, se você mover esse binário para uma pasta como / usr / local / bin /, basta digitar o nome do comando para executá-lo:

 comando [args] 

Isso ocorre porque / usr / local / bin / está no PATH. O shell sabe que deve procurar nessa pasta se você não especificar um local. Muitos utilitários de linha de comando são instalados aqui e em pastas semelhantes. Você pode ver quais pastas estão em seu PATH ecoando a própria variável, usando o prefixo $:

 echo $ PATH 

Porém, por padrão, a variável PATH é uma lista de nomes de diretórios divididos por dois pontos. Não é muito legível:

 / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / games: / usr / local / games: / snap / bin 

Publicidade

Mas, com um pouco de regex, você pode limpá-lo para imprimir uma lista:

 echo $ PATH | sed $ 's /: / \\\ n / g' 

Todos esses diretórios têm finalidades diferentes:

  • As pastas que terminam em bin são de uso geral, as pastas que terminam em sbin são destinadas a comandos de administração do sistema, coisas que o sistema executa, mas com as quais você provavelmente não interagirá muito. Embora existam
  • / bin e / sbin são destinados a programas que o sistema precisa antes de / usr estar disponível. É aqui que os principais programas como sh e ls são armazenados.
  • / usr / bin e / usr / sbin são para programas de usuário normais, geralmente integrados ao sistema operacional.
  • / usr / local / bin e / usr / local / sbin são para programas que você baixou ou compilou. Se você baixou um binário e não sabe onde colocá-lo, jogue-o em / usr / local / bin.

/ usr / local / sbin pode nem mesmo existir em seu sistema, pois é bastante contraditório por natureza. Não está presente no macOS, mas contém alguns programas no Ubuntu.

Você pode ver em quais pastas os diferentes comandos estão localizados com o qual comando:

 que é 

Que imprimirá o caminho completo que leva ao comando fornecido.

Como adicionar pastas ao PATH

Adicionar uma pasta ao PATH é simples, basta definir a variável. Mas você não pode sobrescrevê-lo completamente, então, em vez disso, adicione uma pasta na frente do PATH:

 PATH = ~ / pasta: $ PATH 

Você também pode colar a pasta na parte de trás do PATH:

 PATH = $ PATH: ~ / pasta 

Publicidade

Eles têm usos diferentes. As pastas próximas à frente serão verificadas primeiro, portanto, se houver comandos duplicados (por exemplo, duas versões do Python, ambas chamadas de “ python “), adicionar a pasta à frente garantirá que a pasta que você adicionou manualmente irá ser verificado primeiro. Na maioria das vezes, provavelmente é isso que você deseja.

Normalmente, você definirá isso no perfil do seu shell, que definirá a variável sempre que você abrir um novo terminal. Se você estiver usando o bash, pode ser . bash_profile ou . bashrc. Se você estiver usando um shell como zsh, será um arquivo diferente (. zshrc neste caso). Se já houver uma definição, você pode simplesmente adicionar sua pasta ao início da lista, separada por dois pontos.

Considere o uso de links simbólicos

Em vez de adicionar uma pasta diretamente, você pode usar um link simbólico para comandos específicos e colocar o link simbólico em / usr / local / bin. Por exemplo, o Python instala em sua própria pasta, mas em vez de adicionar essa pasta ao PATH, ele usa um link simbólico. Você pode ver para onde os links simbólicos levam com ls -la:

 ls -la $ (que python) 

E você pode criar links simbólicos com ln:

 Comando ln -s / usr / local / bin / command 

O PATH pode mudar

Visto que a variável PATH é geralmente definida em . bashrc, seu PATH pode ser diferente quando executado em um ambiente diferente. Isso é particularmente relevante se você estiver executando dentro de um script bash ou se estiver executando um comando via cron. Se você &’ está tendo “ comando não encontrado ” problemas, você vai querer verificar se o PATH está definido corretamente no ambiente em que você está executando.

Nenhum comentário