No Linux, seu PATH é uma lista de diretórios nos quais o shell procurará arquivos executáveis quando você emitir um comando sem um caminho. A variável PATH geralmente é preenchida com alguns diretórios padrão, mas você pode definir a variável PATH para o que quiser.
Quando um nome de comando é especificado pelo usuário ou uma chamada exec é feita a partir de um programa, o sistema procura $PATH
, examinando cada diretório da esquerda para a direita na lista, procurando um nome de arquivo que corresponda ao nome do comando. Uma vez encontrado, o programa é executado como um processo filho do shell de comando ou programa que emitiu o comando.
-Wikipedia
Neste breve tutorial, discutiremos como adicionar um diretório ao seu PATH e como tornar as alterações permanentes. Embora não exista uma maneira nativa de excluir um diretório padrão do seu caminho, discutiremos uma solução alternativa. Terminaremos criando um script curto e colocando-o em nosso PATH recém-criado para demonstrar os benefícios da variável PATH.
Quando você tenta executar um comando que possui um local desconhecido (nenhum caminho especificado) para o shell, ele começará a pesquisar nos diretórios listados no seu PATH da esquerda para a direita. Se nenhum comando existir com o nome que você forneceu, o shell exibirá o seguinte erro.
$ gocrazy
bash: gocrazy: comando não encontrado…
Você pode pesquisar os diretórios em seu PATH usando o comando which
. Se você emitir o comando which com um argumento que o shell não pode encontrar no seu caminho, ele exibirá o seguinte erro.
$ which gocrazy
/usr/bin/which: no gocrazy in (/usr/share/Modules/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/home/savona/.local/bin:/home/savona/bin)
Mesmo que o arquivo exista em um dos diretórios do seu PATH, ele deve ser executável para ser encontrado.
Você pode verificar seu caminho atual usando echo para imprimir o valor de $PATH na tela ( stdout ).
$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/savona/.local/bin:/home/savona/bin
Se você deseja adicionar um diretório ao seu caminho, pode usar o comando export Por exemplo, se você deseja adicionar um diretório chamado scripts que reside em seu diretório pessoal, você pode adicioná-lo da seguinte maneira:
export PATH=$PATH:/home/user/scripts
Agora você adicionou /home/user/scripts ao seu PATH.
echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/savona/.local/bin:/home/user/bin:/home/user/scripts
Agora, o shell procurará em /home//user/scripts
quando eu chamar um executável a partir da linha de comando.
O uso da exportação funciona muito bem para uma alteração temporária na variável. As alterações que fizemos usando a exportação não estarão disponíveis se abrirmos um novo shell ou reiniciarmos. A exportação apenas o disponibiliza para o shell atual, processos filho ou shells que são gerados pelo shell atual (sub shells).
Para fazer alterações persistentes na variável PATH, precisamos adicioná-la a um arquivo. Aqui vamos adicioná-lo ao arquivo ~/.bash_profile. Este arquivo é lido toda vez que você efetua login, para que a variável PATH esteja configurada e pronta.
NOTA: O til (~) é uma função especial que significa seu diretório pessoal.
Abra ~/.bash_profile no seu editor favorito e adicione a mesma linha de exportação inserida acima.
export PATH=$PATH:~/scripts
Salve e feche o arquivo. Como alternativa, você pode simplesmente repetir a linha no arquivo da seguinte maneira:
echo 'export PATH = $PATH:~/scripts' >> ~/.bash_profile
Você precisa originar o arquivo bash_profile se quiser disponibilizar as alterações no shell atual.
$ source ~/.bash_profile
Você só precisa originar o arquivo no shell atual. Se você abrir um novo shell, efetue logout e logon novamente ou reinicie o bash_profile será lido e seu PATH será definido.
Provavelmente fiquei um pouco sem ar por lá, peço desculpas. Mas demonstramos como exibir e manipular a variável PATH. Também mostramos por que adicionar algo ao seu caminho é conveniente.
Normalmente, uso apenas ~/.local/bin para todos os meus scripts. Ele mantém meu diretório pessoal organizado e ainda permite que eu chame meus scripts sem usar um caminho absoluto.
Fonte: https://www.putorius.net/set-path-variable-linux.html