Por que o pwd não aceita opções longas como --physical?

Por que o pwd não aceita opções longas como --physical?

Quando exibo o manual do pwdcomando, ele diz que opções longas como --physicalsã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

bashtem um comando integrado pwdque é o que você usa quando simplesmente digita pwdem seu shell.

Para obter o pwddescrito 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/pwdno seu caso) ou acrescentando envantes da linha: env pwd, que inicia o envcomando que pode ser usado para adicionar configurações ao ambiente (mas que não é feito aqui) e então envinicia o comando especificado. Como envnão possui builtin pwd, o "real" /bin/pwdé executado.

A vantagem do pwdbash integrado é que bashrastreia 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 pwdvocê está usando o shell embutido; veja a saída de

type pwd

O interno do seu shell pwdnão suporta opções longas (consulte a documentação do seu shell; como você está usando o Bash, help pwdfornecerá um resumo).

informação relacionada