Quando eu exponho o manual para 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 o RHEL 6.4. Nenhum alias para pwd está configurado. Parece que é pwd padrão:
$ which pwd
/bin/pwd
bash
tem um comando embutidopwd
que é o que você está usando quando simplesmente digitapwd
em seu shell.Para obter o
pwd
conforme descrito pela 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 acrescentandoenv
antes da linha:env pwd
, que inicia oenv
comando que pode ser usado para adicionar configurações ao ambiente (mas que não é feito aqui) e depoisenv
inicia o comando especificado. Comoenv
não tem builtinpwd
, o "real"/bin/pwd
é executado.A vantagem do
pwd
bash embutido é quebash
mantém o controle do diretório atual, portanto, obter o valor tem custo zero, enquanto o comando externo precisa pesquisar no sistema de arquivos para determinar o caminho, que é muito mais intensivo em E/S.Essa página de manual documenta
/bin/pwd
, mas quando você executapwd
você está usando o shell embutido; veja a saída deO built-in do seu shell
pwd
não suporta opções longas (consulte a documentação do seu shell; já que você está usando o Bash,help pwd
fornecerá um resumo).