
Wenn ich das Handbuch für pwd
den Befehl anzeige, steht dort, dass lange Optionen wie --physical
unterstützt werden
$ 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
Es schlägt jedoch fehl, wenn ich Folgendes eingebe
$ pwd --physical
-bash: pwd: --: invalid option
pwd: usage: pwd [-LP]
Warum funktionieren Long-Optionen bei mir nicht?
Ich verwende RHEL 6.4. Es ist kein Alias für pwd konfiguriert. Es sieht aus, als wäre es das Standard-pwd:
$ which pwd
/bin/pwd
Antwort1
bash
verfügt über einen integrierten Befehl pwd
, den Sie verwenden, wenn Sie ihn einfach pwd
in Ihre Shell eingeben.
Um das zu erreichen, pwd
was in der Manpage beschrieben wird, müssen Sie die Verwendung des externen Befehls erzwingen. Sie können dies tun, indem Sie den vollständigen Pfad zur ausführbaren Datei angeben ( /bin/pwd
in Ihrem Fall) oder indem Sie env
vor die Zeile : setzen env pwd
, die den env
Befehl startet, mit dem Einstellungen zur Umgebung hinzugefügt werden können (was hier jedoch nicht getan wird) und dann env
den angegebenen Befehl startet. Da env
kein integriertes vorhanden ist pwd
, wird das „echte“ /bin/pwd
ausgeführt.
Der Vorteil des integrierten Befehls pwd
in Bash besteht darin, dass er bash
das aktuelle Verzeichnis verfolgt, sodass das Abrufen des Werts kostenlos ist. Der externe Befehl hingegen muss das gesamte Dateisystem durchsuchen, um den Pfad zu ermitteln, was wesentlich mehr E/A erfordert.
Antwort2
Diese Manpage dokumentiert /bin/pwd
, aber wenn Sie es ausführen, pwd
verwenden Sie die integrierte Shell. Siehe die Ausgabe von
type pwd
Die integrierten Funktionen Ihrer Shell pwd
unterstützen keine langen Optionen (siehe die Dokumentation Ihrer Shell; da Sie Bash verwenden, help pwd
finden Sie dort eine Zusammenfassung).