Cascas POSIX (como bash
) e fish
tornam o caminho do diretório de trabalho atual (uma propriedade de processo herdada por filhos e preservada na execução de comandos) na variável $PWD
special em shells POSIX. O equivalente para os escudos csh
é igual a $cwd
.
A variável é dinâmica. Seu conteúdo pode mudar depois que você chamar um comando que altera o diretório atual como cd
(ou pushd
/ popd
em alguns shells). Os shells POSIX também mantêm uma variável $OLDPWD
que contém o diretório de trabalho anterior de antes de você chamar com êxito cd
/ pushd
/ popd
.
O comando pwd
imprime um caminho para o diretório atual. Em shells POSIX, esse comando geralmente é embutido e apenas imprime o conteúdo de $PWD
.
Se você quiser saber o diretório de trabalho no momento em que o script foi iniciado, será necessário gravá-lo no início do script, como:
#! /bin/sh -
original_PWD=$PWD
...
cd ...
Para conhecer o diretório de trabalho atual do seu processo pai, no GNU / Linux, você pode fazer
parent_PWD=$(readlink -ve "/proc/$PPID/cwd")
embora você nem sempre tenha permissão para obter essas informações. Se seu pai morreu, você será adotado por init
ou pelo sub-reaper criança, se houver. No entanto, $PPID
não será atualizado, assim você poderá obter o cwd do processo errado nesse caso (se o pid do seu pai foi reutilizado).