Wenn ich das Handbuch für den pwd
Befehl anzeige, heißt es, 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 lange Optionen bei mir nicht?
Ich benutze RHEL 6.4. Es ist kein Alias für pwd konfiguriert. Sieht aus wie es Standard pwd ist:
$ which pwd
/bin/pwd
type
stattwhich
, dawhich
nur Befehletype
angezeigt werden, während Schlüsselwörter, integrierte Funktionen, Aliase, Funktionen und Befehle (und Hash-Befehlspfade) angezeigt werden. Weitere Informationen finden Sie unter Warum nicht "welche" verwenden? Was ist dann zu verwenden?man pwd
hat folgenden Hinweis:your shell may have its own version of pwd, which usually supersedes the version described here. Please refer to your shell's documentation for details about the options it supports
am Ende desDESCRIPTION
Abschnitts.Antworten:
bash
hat einen eingebauten Befehl,pwd
den Sie verwenden, wenn Sie einfachpwd
in Ihre Shell eingeben.Um das
pwd
in der Manpage beschriebene zu erhalten, müssen Sie den externen Befehl erzwingen. Sie können dies tun, indem Sie den vollständigen Pfad zur ausführbaren Datei/bin/pwd
angeben ( in Ihrem Fall) oder indem Sieenv
vor die Zeile :: stellenenv pwd
, wodurch derenv
Befehl gestartet wird, mit dem der Umgebung Einstellungen hinzugefügt werden können (was hier jedoch nicht erfolgt) und dannenv
gestartet wird der angegebene Befehl. Daenv
es kein eingebautes gibtpwd
, wird das "echte"/bin/pwd
ausgeführt.Der Vorteil der integrierten
pwd
Bash besteht darin, dassbash
das aktuelle Verzeichnis nachverfolgt wird , sodass das Abrufen des Werts kostenlos ist , während der externe Befehl das Dateisystem durchsuchen muss, um den Pfad zu ermitteln, der viel intensiver ist.quelle
enable -n pwd
getcwd()
Systemaufruf verwendet wird, durchläuft der Kernel immer noch das Dateisystem, was im Kernelbereich aufgrund des Zugriffs auf relevante Datenstrukturen einfacher ist. In der verknüpften Antwort heißt es: "Beachten Sie jedoch, dass dies auch unter FreeBSD und anderen Betriebssystemen der Fall ist Systeme Der Kernel verfolgt das Arbeitsverzeichnis nicht mit einer Zeichenfolge. "Diese Manpage dokumentiert
/bin/pwd
, aber wenn Sie ausführen, verwendenpwd
Sie die integrierte Shell. siehe die Ausgabe vonDie integrierte Shell
pwd
unterstützt keine langen Optionen (siehe Dokumentation Ihrer Shell; da Sie Bash verwenden,help pwd
wird eine Zusammenfassung bereitgestellt).quelle