De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Rubens Queiroz de Almeida
Data de Publicação: 18 de maio de 2025
A variável de ambiente PATH é uma das configurações mais fundamentais e
importantes em sistemas Linux (e Unix-like em geral). Ela desempenha um papel
crucial na forma como você interage com a linha de comando. Compreender onde
ela é definida e como manipulá-la é essencial para qualquer usuário ou
administrador de Linux.
No Linux, quando você digita um comando na shell (como ls, cd,
grep, firefox, python, etc.) e não especifica o caminho completo
para o executável (ex: /bin/ls), a shell precisa saber onde procurar
por esse comando. É aí que a variável PATH entra em jogo.
A variável PATH é uma lista de diretórios, separados por dois
pontos (:), onde o shell deve procurar por arquivos executáveis quando
você digita um comando. O shell percorre essa lista na ordem, do primeiro
diretório ao último. Assim que ele encontra um executável com o nome do
comando que você digitou, ele o executa e para de procurar.
Exemplo:
Se seu PATH for /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin e você digitar ls, o shell procurará:
/usr/local/sbin/ls (não encontrado)
/usr/local/bin/ls (não encontrado)
/usr/sbin/ls (não encontrado)
/usr/bin/ls (encontrado! Executa /usr/bin/ls)
Se o comando não for encontrado em nenhum dos diretórios listados no
PATH, a shell exibirá o erro command not found (comando não
encontrado).
Para ver o valor atual da sua variável PATH, use o comando echo:
$ echo $PATH
A saída será uma lista de diretórios separados por :.
A variável PATH pode ser definida em vários lugares, tanto em nível
de sistema (afetando todos os usuários) quanto em nível de usuário
(afetando apenas você). A ordem de carregamento depende do tipo de sessão
(login shell ou interativa não-login).
/etc/environment: Este é um dos locais mais comuns e recomendados para definir variáveis de ambiente globais, incluindo PATH, para todos os usuários e para todo o sistema. Ele é lido por programas que não são shells (como sudo ou scripts de inicialização).
Exemplo:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Nenhuma sintaxe de exportação é necessária aqui, pois é um arquivo de configuração de variáveis de ambiente simples.
/etc/profile: Lido por shells de login. Frequentemente, ele define um PATH básico e, em seguida, executa scripts adicionais de /etc/profile.d/.
Exemplo
# set PATH so it includes user's private bin if it exists if [ -d "/usr/local/sbin" ]; then PATH="/usr/local/sbin:$PATH" fi # ... e outras adições
/etc/profile.d/*.sh: Diretório contendo scripts que são executados por /etc/profile. Muitas vezes, pacotes de software instalam seus próprios scripts aqui para adicionar seus diretórios de executáveis ao PATH de forma global.
/etc/login.defs: Este arquivo configura o sistema para o gerenciamento de usuários. Ele pode definir o PATH padrão para novos usuários ou para o ambiente de login inicial, embora PATH seja geralmente mais explicitamente definido em /etc/environment ou /etc/profile.
~/.profile ou ~/.bash_profile (para shells de login): Para shells de login, ~/.bash_profile é lido primeiro. Se não existir, ~/.profile é lido.
São os locais ideais para adicionar diretórios ao seu PATH para executáveis pessoais ou ferramentas de desenvolvimento.
Exemplo de adição ao PATH em ~/.profile
# Adiciona o diretório 'bin' dentro da sua home ao PATH if [ -d "$HOME/bin" ]; then PATH="$HOME/bin:$PATH" fi # Adiciona o diretório 'go/bin' para ferramentas Go, por exemplo if [ -d "$HOME/go/bin" ]; then PATH="$HOME/go/bin:$PATH" fi # Carrega .bashrc para aliases e funções em shells de login if [ -f "$HOME/.bashrc" ]; then . "$HOME/.bashrc" fi
~/.bashrc (para shells interativas não-login): Lido por shells interativas que não são de login (ex: novo terminal).
Embora seja possível definir o PATH aqui, é mais comum e recomendado usar ~/.profile ou ~/.bash_profile para variáveis de ambiente como PATH, pois elas são carregadas apenas uma vez no login e afetam o ambiente geral, enquanto .bashrc é carregado a cada nova shell interativa, o que pode ser redundante para PATH. No entanto, se seu ~/.profile já está fazendo um source de ~/.bashrc, então adicionar PATH em ~/.bashrc funcionará para todas as sessões.
Você pode modificar a variável PATH de forma temporária (apenas para a sessão atual) ou permanente.
Para adicionar um diretório ao PATH apenas para a sessão atual da shell, use o comando export:
PATH (recomendado para ferramentas pessoais que podem "mascarar" comandos do sistema):
$ export PATH="/caminho/para/meu/novo/diretorio:$PATH"
Isso significa que o shell procurará primeiro neste novo diretório antes de procurar nos diretórios existentes.
PATH (menos intrusivo, mas pode não priorizar seu comando):
$ export PATH="$PATH:/caminho/para/meu/novo/diretorio"
Isso significa que o shell procurará neste novo diretório apenas depois de procurar em todos os diretórios existentes.
Para que as alterações no PATH persistam após você fechar e abrir uma nova sessão, você deve editar um dos arquivos de configuração mencionados anteriormente.
Para a maioria dos usuários, a melhor opção é ~/.profile ou ~/.bash_profile:
nano, vim):
$ vi ~/.profile
export PATH="..." no final do arquivo, seguindo a sintaxe de adição no início ou no final.
export PATH="$HOME/personal_scripts:$PATH"
Para que as alterações entrem em vigor na sua sessão atual, você pode fazer logout e login novamente ou usar o comando source (ou .) para recarregar o arquivo:
$ source ~/.profile
Manipular a variável PATH incorretamente pode levar a problemas, incluindo falhas de segurança e comandos que não funcionam como esperado.
PATH.
PATH que contém um executável com o mesmo nome de um comando do sistema (ex: ls), sua versão será executada em vez da do sistema. Isso pode ser intencional, mas também uma fonte de erros.
.): NUNCA adicione . (o diretório atual) ao seu PATH, especialmente no início. Se você adicionar . ao seu PATH (ex: export PATH=".:$PATH"), e navegar para um diretório que contém um script malicioso (ou até mesmo um arquivo de texto inofensivo) com o mesmo nome de um comando comum (ex: ls), e então digitar ls, a shell pode executar o script malicioso no diretório atual em vez do comando ls real do sistema. Isso é um vetor de ataque conhecido como "trojan horse". Por segurança, muitos sistemas Linux não incluem . no PATH por padrão.
PATH. Isso inclui diretórios compartilhados ou de rede onde usuários não confiáveis podem ter permissão para escrever arquivos.
PATH contiver espaços ou caracteres especiais, você deve envolvê-lo em aspas duplas:
export PATH="/caminho/com espaço/no nome:$PATH"
PATH. Duplicatas não causam erros, mas tornam o PATH mais longo e um pouco menos eficiente.
/etc/environment, /etc/profile.d/) apenas para ferramentas que todos os usuários precisam. Use arquivos de nível de usuário (~/.profile, ~/.bash_profile) para ferramentas pessoais ou específicas do seu fluxo de trabalho.
PATH após salvá-las e recarregá-las (com source ou reiniciando a sessão). Verifique se os comandos esperados ainda funcionam e se os novos comandos estão acessíveis.
PATH e não conseguir executar comandos básicos, como ls ou vim, tente digitar o caminho completo para um editor: /bin/vim ~/.profile para corrigir o arquivo ou defina um PATH temporário conhecido que funcione:
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Isso permitirá que você execute comandos e corrija o arquivo de configuração permanentemente.
Dominar a variável PATH é um passo importante para se tornar mais proficiente no Linux, permitindo que você personalize seu ambiente de trabalho de forma eficiente e segura.