web-dev-qa-db-fra.com

Pourquoi PWD n'accepte pas d'options longues comme --physiques?

Lorsque j'affiche le manuel de la commande pwd, il dit que des options longues comme --physical sont pris en charge

$ 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

Cependant, il échoue lorsque je tape ce qui suit

$ pwd --physical
-bash: pwd: --: invalid option
pwd: usage: pwd [-LP]

Pourquoi les options longues ne fonctionnent-elles pas pour moi?

J'utilise Rhel 6.4. Aucun alias pour PWD n'est configuré. On dirait que c'est standard pwd:

$ which pwd
/bin/pwd
11
Michal Kordas

bash a une commande intégrée pwd qui est ce que vous utilisez lorsque vous tapez simplement pwd dans votre coquille.

Pour obtenir le pwd comme décrit par le MANPAGE, vous avez besoin d'une utilisation de force de la commande externe. Vous pouvez le faire en spécifiant le chemin complet de l'exécutable (/bin/pwd Dans votre cas) ou par Prepending env avant la ligne: env pwd, qui commence la commande env qui peut être utilisée pour ajouter des paramètres à l'environnement (mais ce qui n'est pas effectué ici), puis env commence la commande spécifiée. Comme env n'a pas de construction pwd, le "réel" /bin/pwd est exécuté.

L'avantage de la construction pwd in Bash est que bash garde une trace du répertoire actuel, la valeur est donc à zéro coût, alors que la commande externe doit rechercher dans le système de fichiers pour déterminer Le chemin, qui est beaucoup plus IO intensive.

26
wurtel