Se eu pwd
notar, ele usa os links simbólicos que usei para entrar no diretório atual. Posso dizer-me o diretório "real" em que estou ... ou seja, o caminho da raiz para o meu diretório atual sem o uso de links simbólicos?
54
De acordo com a página de manual do POSIX pwd
, a -P
opção pode ser útil:
-P O nome do caminho absoluto escrito não deve conter nomes de arquivos que, no contexto do nome do caminho, se refiram a arquivos do tipo link simbólico.
portanto
$ pwd -P
deve ser o que você precisa.
man pwd
no shell para descobrir opções para este comando.O pwd shell interno usa o caminho que o shell monitora quando você
cd
(e o armazena$PWD
). Isso significa que, se você tiver um link simbólico para um caminho complexo (profundo), ele informará o que você digitou para alterar para esse diretório, em vez do caminho real. Isso é feito para fornecer o que você deseja na maioria das vezes./bin/pwd
usa agetcwd
chamada do sistema (que atualmente é uma chamada de biblioteca, lendo/proc/self/cwd
) que retorna o caminho canônico para o diretório atual, sem todas as passagens do link simbólico.Como Steven D apontou,
pwd
tem a-P
opção de ignorar$PWD
. Ele também tem a-L
opção de retornar o conteúdo de$PWD
. A página de manual dopwd
não diz qual opção é usada por padrão, mas a experiência me diz que a descrição acima está correta (shellpwd
vs./bin/pwd
). No entanto, você provavelmente não deve confiar nisso e apenas usá-lopwd -P
.fonte
/bin/pwd
está o GNUpwd
quando POSIXLY_CORRECT não está definido. Nos sistemas POSIX em quepwd
está/bin
./bin/pwd
usará $ PWD e pode retornar caminhos com links simbólicos. O GNU pwd se comportará dessa maneira POSIX quando encontrar uma variável POSIXLY_CORRECT em seu ambiente.