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.
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários