Header Ads

Como adicionar um diretório ao seu $ PATH no Linux

Fatmawati Achmad Zaenuri / Shutterstock

$ PATH é um dos manipuladores silenciosos no fundo do seu computador Linux. Afeta discretamente a experiência do usuário, mas não há nada de obscuro nisso. Vamos explicar o que faz e como você pode ajustá-lo.

O que é o $ PATH no Linux e como funciona?

Quando você digita um comando em uma janela do terminal e pressiona Enter, inicia bastante atividade antes mesmo de o seu comando ser executado.

Bash é o shell padrão na maioria das distribuições Linux. Ele interpreta a linha de texto que você digitou e identifica os nomes dos comandos entremeados com os parâmetros, canais, redirecionamentos e qualquer outra coisa que esteja lá. Em seguida, localiza os binários executáveis ​​para esses comandos e os lança com os parâmetros que você forneceu.

O primeiro passo que o shell executa para localizar o executável é identificar se um binário está envolvido. Se o comando que você usa estiver dentro do próprio shell (um “ shell embutido ”), nenhuma pesquisa adicional será necessária.

Os componentes internos do shell são os mais fáceis de encontrar, porque são parte integrante do shell. É como tê-los em um cinto de ferramentas; eles estão sempre com você.

Se você precisar de uma de suas outras ferramentas, precisará vasculhar a oficina para encontrá-la. Está em sua bancada ou em um cabide de parede? É isso que a variável de ambiente $ PATH faz. Ele contém uma lista de locais que o shell pesquisa e a ordem em que eles serão pesquisados.

Se você quiser ver se um comando é um shell embutido, um alias, uma função ou um binário independente mv / work / unfile, você pode usar o comando type, como mostrado abaixo:

 tipo claro 

 digite cd 

Isso nos diz que clear é um arquivo binário, e o primeiro encontrado no caminho está localizado em / usr / bin. Você pode ter mais de uma versão do clear instalada no seu computador, mas essa é a que o shell tentará usar.

Sem surpresa, o cd é um shell embutido.

Listando seu $ PATH

É fácil ver o que está no seu caminho. Basta digitar o seguinte para usar o comando echo e imprimir o valor mantido na variável $ PATH:

 echo $ PATH 

A saída é uma lista de locais do sistema de arquivos delimitados por dois pontos (:). O shell pesquisa da esquerda para a direita pelo caminho, verificando cada local do sistema de arquivos em busca de um executável correspondente para executar seu comando.

Podemos escolher a lista para ver os locais do sistema de arquivos que serão pesquisados ​​e a ordem em que serão pesquisados:

  • / usr / local / sbin
  • / usr / local / bin
  • / usr / sbin
  • / usr / bin
  • / sbin
  • / bin
  • / usr / games
  • / usr / local / games
  • / snap / bin

Algo que pode não ser imediatamente óbvio é que a pesquisa não inicia no diretório de trabalho atual. Em vez disso, ele percorre os diretórios listados e apenas os diretórios listados.

Se o diretório de trabalho atual não estiver no seu caminho, ele não será pesquisado. Além disso, se você tiver comandos armazenados em diretórios que não estão no caminho, o shell não os encontrará.

Para demonstrar isso, criamos um pequeno programa chamado rf. Quando executado, rf imprime o nome do diretório a partir do qual foi iniciado na janela do terminal. Está localizado em / usr / local / bin. Também temos uma versão mais recente no diretório / dave / work.

Digitamos o seguinte comando para nos mostrar qual versão do nosso programa o shell encontrará e usará:

 qual rf 

O shell relata que a versão encontrada é a do diretório que está no caminho.

Digitamos o seguinte para ativá-lo:

 rf 

A versão 1.0 do rf é executada e confirma que nossas expectativas estavam corretas. A versão encontrada e executada está localizada em / usr / local / bin.

Para executar qualquer outra versão do rf neste computador, teremos que usar o caminho para o executável na linha de comando, como mostrado abaixo:

 ./ work / rf 

Agora que dissemos ao shell onde encontrar a versão do rf que queremos executar, ele usa a versão 1.1. Se preferirmos esta versão, podemos copiá-la para o diretório / usr / local / bin e substituir a antiga.

Digamos que estamos desenvolvendo uma nova versão do rf. Precisamos executá-lo com frequência à medida que o desenvolvemos e testamos, mas não queremos copiar uma construção de desenvolvimento não lançada no ambiente ao vivo.

Ou talvez tenhamos baixado uma nova versão do rf e desejamos fazer alguns testes de verificação antes de disponibilizá-lo ao público.

Se adicionarmos nosso diretório de trabalho ao caminho, faremos com que o shell encontre nossa versão. E essa alteração somente nos afetará. Outros ainda usarão a versão do rf em / usr / local / bin.

Adicionando um diretório ao seu $ PATH

Você pode usar o comando export para adicionar um diretório ao $ PATH. O diretório é incluído na lista de locais do sistema de arquivos pesquisados ​​pelo shell. Quando o shell encontra um executável correspondente, ele para de pesquisar, portanto, você deve verificar primeiro o diretório, antes de / usr / local / bin.

Isso é fácil de fazer. No nosso exemplo, digite o seguinte para adicionar nosso diretório ao início do caminho, para que ele seja o primeiro local pesquisado:

 exportar PATH = / home / dave / work: $ PATH 

Este comando define $ PATH para ser igual ao diretório que estamos adicionando, / home / dave / work e, em seguida, todo o caminho atual.

O primeiro PATH não tem cifrão ($). Definimos o valor para PATH. O $ PATH final possui um cifrão porque estamos referenciando o conteúdo armazenado na variável PATH. Além disso, observe os dois pontos (:) entre o novo diretório e o nome da variável $ PATH.

Vamos ver como é o caminho agora:

 echo $ PATH 

Nosso diretório / home / dave / work é adicionado ao início do caminho. O cólon que fornecemos separa o resto do caminho.

Digitamos o seguinte para verificar se nossa versão do rf é a primeira encontrada:

 qual rf 

A prova no pudim está sendo executada em rf, como mostrado abaixo:

 rf 

O shell encontra a versão 1.1 e a executa em / home / dave / work.

Para adicionar nosso diretório ao final do caminho, apenas o movemos para o final do comando, assim:

 exportar PATH = $ PATH: / home / dave / work 

Tornando as alterações permanentes

Como Beth Brooke-Marciniak disse: "Sucesso é bom, mas sucesso é passageiro." No momento em que você fecha a janela do terminal, todas as alterações feitas no $ PATH desaparecem. Para torná-los permanentes, você deve colocar seu comando de exportação em um arquivo de configuração.

Quando você coloca o comando de exportação no seu arquivo . bashrc, ele define o caminho sempre que você abre uma janela do terminal. Diferentemente das sessões SSH, nas quais você precisa fazer login, elas são chamadas de "interativas" ” sessões.

No passado, você colocava o comando de exportação no seu arquivo . profile para definir o caminho para as sessões de terminal de logon.

No entanto, descobrimos que, se colocarmos o comando export nos arquivos . bashrc ou . profile, ele definirá corretamente o caminho para as sessões de terminal interativas e de logon. Sua experiência pode ser diferente. Para lidar com todas as eventualidades, mostraremos como fazer isso nos dois arquivos.

Use o seguinte comando no diretório / home para editar o arquivo . bashrc:

 gedit . bashrc 

O editor do gedit é aberto com o arquivo . bashrc carregado.

Role até a parte inferior do arquivo e adicione o seguinte comando de exportação que usamos anteriormente:

 exportar PATH = / home / dave / work: $ PATH 

Salve o arquivo. Em seguida, feche e reabra a janela do terminal ou use o comando dot para ler o arquivo . bashrc, da seguinte maneira:

. . bashrc

Em seguida, digite o seguinte comando echo para verificar o caminho:

 echo $ PATH 

Isso adiciona o diretório / home / dave / work ao início do caminho.

O processo para adicionar o comando ao arquivo . profile é o mesmo. Digite o seguinte comando:

 gedit . profile 

O editor do gedit é iniciado com o arquivo . profile carregado.

Adicione o comando de exportação na parte inferior do arquivo e salve-o. Fechar e abrir uma nova janela do terminal é insuficiente para forçar a leitura do arquivo . profile. Para que as novas configurações entrem em vigor, você deve efetuar logout e logon novamente ou usar o comando dot, como mostrado abaixo:

. . profile 

RELACIONADO: Como editar arquivos de texto graficamente no Linux com o gedit

Definindo o caminho para todos

Para definir o caminho para todos que usam o sistema, você pode editar o arquivo / etc / profile.

Você precisará usar o sudo, da seguinte forma:

 sudo gedit / etc / profile 

Quando o editor gedit for iniciado, adicione o comando export na parte inferior do arquivo.

Salve e feche o arquivo. As alterações entrarão em vigor para outras pessoas na próxima vez em que fizerem login.

Uma nota sobre segurança

Certifique-se de que você não adiciona acidentalmente dois pontos principais: ” para o caminho, como mostrado abaixo.

Se o fizer, procurará primeiro o diretório atual, o que apresenta um risco à segurança. Digamos que você baixou um arquivo morto e descompactou-o em um diretório. Você olha os arquivos e vê outro arquivo compactado. Você chama descompactar mais uma vez para extrair esse arquivo.

Se o primeiro arquivo continha um arquivo executável chamado descompactar que era um executável mal-intencionado, você acidentalmente acionava aquele em vez do executável descompactado real. Isso aconteceria porque o shell procuraria primeiro o diretório atual.

Portanto, sempre tenha cuidado ao digitar seus comandos de exportação. Use echo $ PATH para revisá-los e verifique se eles são do jeito que você deseja que sejam.

Via: How to Geek

Veja Também:

Nenhum comentário