Linux / Comando pwd: consultar o diretório atual com -L e -P
pwd mostra o caminho do diretório de trabalho atual, isto é, a pasta usada como base para interpretar caminhos relativos. Use pwd -L para consultar o nome lógico mantido pelo shell e pwd -P para obter um caminho sem componentes de links simbólicos. Isso ajuda a conferir a localização no terminal e antes de executar tarefas em scripts.
Os exemplos usam Bash e, quando indicado, o programa externo do GNU Coreutils. Um link simbólico é uma referência a outro caminho: o nome usado para chegar à pasta pode ser diferente do caminho obtido ao resolver esse link. As saídas com /home/user e /srv são ilustrativas e pressupõem essas pastas; adapte os nomes ao seu ambiente.
O que é o comando pwd?
pwd significa print working directory. Ele imprime o caminho absoluto do diretório que o shell ou processo atual está usando como referência de trabalho.
pwd
Se o terminal estiver na pasta de um projeto, uma saída ilustrativa seria:
/home/user/projects/web-app
O diretório de trabalho atual é a referência para interpretar caminhos relativos. O mesmo caminho relativo, config/settings.ini, aponta para arquivos diferentes dependendo de qual diretório o comando é executado.
Sintaxe e uso básico
pwd [opções]
A sinopse usa colchetes para uma parte opcional; não os digite literalmente. pwd consulta a posição atual e não recebe um diretório para navegar. No exemplo abaixo, o primeiro comando mostra a posição inicial e a segunda consulta só ocorre se a entrada em /var/log tiver sucesso:
pwd
cd -- /var/log && pwd
O segundo pwd só será executado se cd retornar sucesso. Com o caminho mostrado, e desde que ele não seja um link resolvido de outra forma, a saída será /var/log. Se a pasta não existir ou o acesso falhar, o Bash informa o erro. O guia de cd detalha a mudança de diretório e seus cuidados.
Diferença entre -L e -P
Um caminho lógico mantém nomes de links usados na navegação; um caminho físico resolve esses links. Na tabela, as opções curtas -L e -P são as adequadas para Bash e para uso portátil. As formas longas pertencem ao programa externo GNU e não devem ser presumidas no comando interno do shell.
| Opção | Ação |
|---|---|
-L (GNU: --logical) |
Solicita o caminho lógico válido, que pode preservar nomes de links simbólicos usados para entrar na pasta. |
-P (GNU: --physical) |
Exibe o caminho físico do diretório após resolver os links simbólicos. |
Consultar o caminho lógico com -L
Considere um exemplo já preparado: /srv/current é um link simbólico existente para /srv/releases/2026-09, que também existe. Não crie nem altere links de uma implantação real só para testar. No Bash, entre explicitamente pelo modo lógico:
cd -L -- /srv/current && pwd -L
Depois de uma entrada bem-sucedida com cd -L, o nome lógico pode aparecer assim:
/srv/current
Consultar o caminho físico com -P
pwd -P
Na mesma sessão, após a entrada bem-sucedida do exemplo anterior, pwd -P resolve o link e pode mostrar:
/srv/releases/2026-09
Os dois resultados identificam a mesma pasta por nomes diferentes. Consultar pwd -P não muda o diretório atual nem transforma automaticamente o modo de navegação de cd. Se a consulta lógica não for válida ou a identificação do diretório falhar, o comportamento pode depender da implementação; trate erros antes de usar o resultado.
pwd interno do shell e programa externo
Muitos shells, incluindo o Bash, fornecem pwd como um comando interno. O sistema também pode ter o executável externo do GNU Coreutils instalado.
type -a pwd
command -V pwd
A saída de type -a pwd pode incluir estas linhas em uma instalação Linux com mensagens em inglês. command -V pwd informa a resolução que o shell usaria; não espere necessariamente a mesma lista. Caminhos e idioma variam conforme o sistema:
pwd is a shell builtin
pwd is /usr/bin/pwd
Usar o comando interno
O shell mantém seu próprio diretório de trabalho e o nome lógico usado na navegação. O comando interno consulta esse contexto sem precisar iniciar o programa externo. Confira a resolução real com type quando houver funções ou aliases com o mesmo nome.
O manual dos comandos internos do Bash descreve pwd com -L e -P. Normalmente o Bash mantém o nome lógico; com set -P, seu modo físico pode mudar o resultado sem opção. Ao precisar de um comportamento definido no script, indique explicitamente -L ou -P.
Executar o programa externo explicitamente
Para verificar o comportamento dos executáveis do GNU Coreutils, você pode especificar o caminho completo. A localização real pode variar dependendo da distribuição.
/usr/bin/pwd
/usr/bin/pwd -P
Confirme primeiro se o executável existe nesse caminho. No GNU Coreutils, o pwd externo usa -P por padrão, exceto quando POSIXLY_CORRECT está definido. A norma POSIX define -L como padrão. Portanto, o comando interno e o programa externo podem produzir nomes diferentes para a mesma pasta. As formas longas --logical e --physical são opções GNU, não uma exigência portátil.
Variáveis de ambiente PWD e OLDPWD
Bash mantém PWD para a posição atual e OLDPWD para a posição anterior. Os nomes são maiúsculos e diferem do comando pwd. As variáveis podem ser exportadas ao ambiente dos processos filhos; OLDPWD pode não estar definido em uma sessão recém-iniciada.
| Item | Significado |
|---|---|
pwd |
Um comando que imprime o diretório de trabalho atual. |
PWD |
O caminho lógico do diretório de trabalho atual lembrado pelo shell. |
OLDPWD |
Geralmente, o diretório de trabalho usado anteriormente. É usado em cd -. |
printf '%s\n' "$PWD"
printf '%s\n' "$OLDPWD"
pwd -L
pwd -P
Não atribua manualmente outro valor a PWD para tentar mudar de pasta: essa atribuição não substitui cd. Ela pode deixar a variável incoerente, e a norma não garante o mesmo resultado de pwd após alterações desse tipo. Para consultar um caminho físico no Bash ou GNU, use pwd -P e confira o retorno da chamada.
Usar pwd em scripts Bash
Consultar a posição com tratamento de erro
Este é um script completo de consulta, sem alterar arquivos. Salve o bloco como show-cwd.sh e execute com bash show-cwd.sh na pasta que deseja consultar. Bash precisa estar instalado. O script termina com 1 se não conseguir obter o caminho e com 0 após escrever a mensagem:
#!/usr/bin/env bash
current_dir=$(pwd -P) || {
printf '%s\n' 'Não foi possível consultar o diretório atual.' >&2
exit 1
}
printf 'Diretório de trabalho atual: %s\n' "$current_dir"
A mensagem deve conter o caminho físico da pasta de onde você chamou o script. As aspas em "$current_dir" preservam espaços como parte de um único argumento. Essa atribuição consulta a posição, mas não verifica se ela é a pasta esperada por uma aplicação. A substituição de comando remove quebras de linha finais; para uma validação rigorosa de nomes incomuns, essa técnica exige tratamento adicional.
Distinguir a pasta de trabalho da pasta do script
pwd consulta o diretório de trabalho do processo, que pode ser diferente da pasta onde está o arquivo do script. O teste abaixo cria uma pasta temporária exclusiva, grava nela um script de consulta e o chama a partir de uma pasta com espaços. Requer Bash e os utilitários mktemp, mkdir e cat:
(
demo_dir=$(mktemp -d "${TMPDIR:-/tmp}/pwd-demo.XXXXXX") || exit 1
mkdir -p -- "$demo_dir/tools" "$demo_dir/work area" || exit 1
cat > "$demo_dir/tools/show-cwd.sh" <<'BASH'
#!/usr/bin/env bash
pwd -P
BASH
cd -- "$demo_dir/work area" || exit 1
bash "$demo_dir/tools/show-cwd.sh"
)
A saída deve terminar em /work area, embora o arquivo esteja em /tools/show-cwd.sh. Os parênteses mantêm a mudança de pasta em um subshell, sem mudar a posição do terminal chamador. A pasta temporária permanece para inspeção; o teste não executa backups nem altera uma implantação. Localizar o arquivo do próprio script é uma tarefa separada, dependente do shell, da forma de chamada e do tratamento de links.
Comparação de pwd e comandos relacionados
| Comando | Propósito |
|---|---|
pwd |
Exibe o caminho do diretório de trabalho atual. |
cd |
Altera o diretório de trabalho do shell atual. |
realpath |
Normaliza o nome de arquivo ou caminho especificado e o imprime como um caminho absoluto. |
dirname |
Imprime a parte de uma string de caminho excluindo o último componente. |
readlink |
Verifica a string alvo armazenada em um link simbólico. |
O guia de comandos Linux por tarefa reúne outras ferramentas para navegar, consultar e manipular caminhos.
Problemas comuns
Diretório removido ou inacessível
Uma pasta removida, renomeada ou inacessível pode impedir a reconstrução do caminho, conforme o shell e o sistema de arquivos. Um nome lógico em cache ainda pode aparecer e não comprova que o caminho continua acessível. Se houver erro, entre em um caminho absoluto conhecido e existente, como seu diretório pessoal, e consulte novamente. Evite depender apenas de .. se a hierarquia atual estiver inválida.
Resultado diferente do nome esperado
Se você navegou através de um link simbólico, os resultados de pwd -L e pwd -P podem ser diferentes. Isso não significa que algum dos caminhos esteja errado; mostra duas perspectivas diferentes: o nome lógico e a localização física.
Diretório inicial diferente em scripts
Tarefas agendadas por cron, serviços systemd, processos de integração contínua (CI) e contêineres podem começar em uma pasta diferente da usada no terminal interativo. Defina o diretório de trabalho na configuração do serviço ou entre explicitamente na pasta, tratando a falha antes de acessar caminhos relativos.
Perguntas frequentes
O que significa pwd?
A sigla vem de print working directory, isto é, mostrar o diretório de trabalho. O comando escreve o caminho absoluto da pasta usada como referência pelo processo.
O comando pwd é o mesmo que echo "$PWD"?
Não. echo "$PWD" imprime o conteúdo de uma variável; pwd executa a consulta conforme as regras do shell ou programa que foi resolvido. Em uma sessão coerente, os nomes lógicos podem coincidir. pwd -P solicita um caminho sem links simbólicos, e uma variável alterada manualmente não é uma confirmação da posição real.
Qual devo usar, pwd -L ou pwd -P?
Use -L se você quiser manter o nome do caminho que o usuário navegou, e use -P se precisar do caminho real do sistema de arquivos com links simbólicos resolvidos.
O comando pwd retorna a localização onde o script está armazenado?
Não. Ele retorna o diretório de trabalho atual do processo que está executando o script. A localização do arquivo de script e o diretório de trabalho atual podem ser diferentes.




