Linux · 5 min read · Jan 20, 2026

Dicas/truques de navegação na linha de comando do Linux 3 - a variável de ambiente CDPATH

Na primeira parte desta série, discutimos o comando cd - em detalhes, e na segunda parte, fizemos uma análise aprofundada dos comandos pushd e popd, bem como dos cenários em que eles são úteis.

Continuando nossa discussão sobre os aspectos de navegação na linha de comando, neste tutorial, discutiremos a variável de ambiente CDPATH através de exemplos fáceis de entender. Também discutiremos alguns detalhes avançados relacionados a esta variável.

** A variável de ambiente CDPATH

* Mesmo que seu trabalho na linha de comando envolva realizar todas as operações em um diretório específico - digamos, seu diretório home - você ainda terá que fornecer caminhos absolutos ao mudar de diretórios. Por exemplo, considere uma situação em que estou no diretório /home/himanshu/Downloads*:

$ pwd  
/home/himanshu/Downloads

E a exigência é mudar para o diretório /home/himanshu/Desktop. Para fazer isso, geralmente, eu teria que executar:

cd /home/himanshu/Desktop/

ou

cd ~/Desktop/

ou

cd ../Desktop/

Não seria fácil se eu pudesse apenas executar o seguinte comando:

cd Desktop

Sim, isso é possível. E é aqui que a variável de ambiente CDPATH entra. Você pode usar essa variável para definir o diretório base para o comando cd.

Se você tentar imprimir seu valor, verá que essa variável de ambiente está vazia por padrão:

$ echo $CDPATH  
$

Agora, considerando o caso que discutimos até agora, vamos usar essa variável de ambiente para definir /home/himanshu como o diretório base para o comando cd.

A maneira mais fácil de fazer isso é:

export CDPATH=/home/himanshu

E agora, posso fazer o que não consegui fazer antes - de dentro do diretório /home/himanshu/Downloads, executar o comando cd Desktop com sucesso.

$ pwd  
/home/himanshu/Downloads  
$ cd Desktop/  
/home/himanshu/Desktop  
$

Isso significa que agora posso fazer um cd para qualquer diretório sob /home/himanshu sem especificar explicitamente /home/himanshu ou ~ ou ../ (ou múltiplos ../) no comando cd.

Pontos a serem lembrados

* Então você agora sabe como usamos a variável de ambiente CDPATH para mudar facilmente de /home/himanshu/Downloads para /home/himanshu/Desktop. Agora, considere uma situação em que o diretório /home/himanshu/Desktop contém um subdiretório chamado Downloads*, e é este último onde você pretende mudar.

Mas de repente você percebe que fazer um cd Desktop levará você para /home/himanshu/Desktop. Então, para garantir que isso não aconteça, você faz:

cd ./Downloads

Embora não haja problema no comando mencionado por si só, isso é um esforço extra da sua parte (por menor que seja), especialmente considerando que você terá que fazer isso toda vez que tal situação surgir. Uma solução mais elegante para esse problema pode ser definir originalmente a variável CDPATH da seguinte maneira:

export CDPATH=".:/home/himanshu"

Isso significa que você está dizendo ao comando cd para primeiro procurar o diretório no diretório de trabalho atual e, em seguida, tentar buscar no diretório /home/himanshu. Claro, se você deseja ou não que o comando cd se comporte dessa maneira depende inteiramente da sua preferência ou necessidade - minha ideia ao discutir este ponto foi informá-lo que esse tipo de situação pode surgir.

Como você deve ter entendido até agora, uma vez que a variável de ambiente CDPATH está definida, seu valor - ou o conjunto de caminhos que contém - são os únicos lugares no sistema onde o comando cd procura diretórios (exceto, é claro, nos cenários em que você usa caminhos absolutos). Portanto, cabe a você garantir que o comportamento do comando permaneça consistente.

Seguindo em frente, se houver um script bash que usa o comando cd com caminhos relativos, então é melhor limpar ou desconfigurar a variável de ambiente CDPATH primeiro, a menos que você esteja ok em ficar preso em problemas imprevistos. Alternativamente, em vez de usar o comando export no terminal para definir CDPATH, você pode definir a variável de ambiente em seu arquivo .bashrc após testar para shells interativos/não interativos para garantir que a mudança que você está tentando fazer seja refletida apenas em shells interativos.

A ordem em que os caminhos aparecem no valor da variável de ambiente também é importante. Por exemplo, se o diretório atual estiver listado antes de /home/himanshu, então o comando cd primeiro procurará um diretório no diretório de trabalho atual e depois passará para /home/himanshu. No entanto, se o valor for “/home/himanshu:.” então a primeira busca será feita em /home/himanshu e depois no diretório atual. Não é necessário dizer que isso afetará o que o comando cd faz e pode causar problemas se você não estiver ciente da ordem dos caminhos.

Sempre tenha em mente que a variável de ambiente CDPATH, como o nome sugere, funciona apenas para o comando cd. Isso significa que enquanto estiver dentro do diretório /home/himanshu/Downloads, você pode executar o comando cd Desktop para mudar para o diretório /home/himanshu/Desktop, mas não pode fazer um ls. Aqui está um exemplo:

$ pwd  
/home/himanshu/Downloads  
$ ls Desktop  
ls: cannot access Desktop: No such file or directory  
$

No entanto, pode haver algumas soluções simples. Por exemplo, podemos alcançar o que queremos com esforço mínimo da seguinte maneira:

$ cd Desktop/;ls  
/home/himanshu/Desktop  
backup backup~ Downloads gdb.html outline~ outline.txt outline.txt~

Mas sim, pode não haver uma solução para cada situação.

Outro ponto importante: como você pode ter observado, sempre que você usa o comando cd com a variável de ambiente CDPATH definida, o comando produz o caminho completo do diretório para o qual você está mudando na saída. Não é necessário dizer que nem todo mundo gostaria de ter essa informação toda vez que executa o comando cd em sua máquina.

Para garantir que essa saída seja suprimida, você pode usar o seguinte comando:

alias cd='>/dev/null cd'

O comando mencionado acima irá silenciar a saída sempre que o comando cd for bem-sucedido, mas permitirá que as mensagens de erro sejam produzidas sempre que o comando falhar.

Por fim, caso você enfrente um problema em que, após definir a variável de ambiente CDPATH, não consegue usar o recurso de conclusão de tabulação do shell, então você pode tentar instalar e habilitar o bash-completion - mais sobre isso aqui.

Conclusão

A variável de ambiente CDPATH é uma espada de dois gumes - se não for usada com cautela e conhecimento completo, pode te levar a algumas armadilhas complexas que podem exigir muito do seu tempo precioso para serem resolvidas. É claro que isso não significa que você nunca deve tentar; apenas avalie todas as opções disponíveis e se você concluir que usar CDPATH seria de grande ajuda, então vá em frente e use-a.

Você tem usado CDPATH como um profissional? Tem mais dicas para compartilhar? Por favor, compartilhe seus pensamentos nos comentários abaixo.

**

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.