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
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.