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
Nenhum comentário