
Quando exibo o manual do pwd
comando, ele diz que opções longas como --physical
são suportadas
$ man pwd
PWD(1) User Commands PWD(1)
NAME
pwd - print name of current/working directory
SYNOPSIS
pwd [OPTION]...
DESCRIPTION
Print the full filename of the current working directory.
-L, --logical
use PWD from environment, even if it contains symlinks
-P, --physical
avoid all symlinks
No entanto, ele falha quando digito o seguinte
$ pwd --physical
-bash: pwd: --: invalid option
pwd: usage: pwd [-LP]
Por que as opções longas não funcionam para mim?
Estou usando RHEL 6.4. Nenhum alias para pwd está configurado. Parece que é o pwd padrão:
$ which pwd
/bin/pwd
Responder1
bash
tem um comando integrado pwd
que é o que você usa quando simplesmente digita pwd
em seu shell.
Para obter o pwd
descrito na página de manual, você precisa forçar o uso do comando externo. Você pode fazer isso especificando o caminho completo para o executável ( /bin/pwd
no seu caso) ou acrescentando env
antes da linha: env pwd
, que inicia o env
comando que pode ser usado para adicionar configurações ao ambiente (mas que não é feito aqui) e então env
inicia o comando especificado. Como env
não possui builtin pwd
, o "real" /bin/pwd
é executado.
A vantagem do pwd
bash integrado é que bash
rastreia o diretório atual, portanto, obter o valor tem custo zero, enquanto o comando externo precisa pesquisar no sistema de arquivos para determinar o caminho, o que exige muito mais IO.
Responder2
Essa página de manual documenta /bin/pwd
, mas quando você executa pwd
você está usando o shell embutido; veja a saída de
type pwd
O interno do seu shell pwd
não suporta opções longas (consulte a documentação do seu shell; como você está usando o Bash, help pwd
fornecerá um resumo).