Als erstes sollten Sie type .
aufrufen , erhalten Sie wahrscheinlich etwas wie:
. is a shell builtin
Builtins sind Teile Ihrer Shell, sie haben keine eigenen Handbuchseiten. Einige von ihnen scheinen sie jedoch zu haben, z. echo
ist in Bash eingebaut, aber höchstwahrscheinlich gibt es eine separate ausführbare Datei wie /bin/echo
in Ihrem System und in diesem Fall man echo
bezieht sich auf Letzteres . Diese beiden echo
s sind wahrscheinlich nicht unbedingt gleichwertig.
Ihre Shell kann über help
Informationen über alle eingebauten Funktionen bereitstellen eingebaut; versuchen Sie es mit help help
, help type
und schließlich:
help .
Builtins können auch in der Handbuchseite Ihrer Shell aufgeführt sein. Z.B. (in meinem Debian) Bash builtins werden direkt in man bash
behandelt , jedoch für Zsh builtins man zsh
sagt mir, dass ich man zshbuiltins
ausführen soll . Im Allgemeinen können Shells ihre Builtins erklären oder auch nicht.
Versuchen Sie es mit man sh
oder man bash
oder die Manpage für die von Ihnen verwendete Shell. (Vielleicht man $SHELL
.)
Dies wird offiziell nicht als "Punkt"-Befehl bezeichnet, sondern als source
Befehl. Suche nach dem Wort source
kann hilfreich sein.
B. Bash-Manpage (suchen Sie nach „each builtin command“), und Sie werden schnell die Dokumentation finden.
Was die Erklärung der Verwendung betrifft, kann ich das gleich hier tun. Ich werde dies einfach als source
bezeichnen Befehl, wobei zu erkennen ist, dass er auf einen Punkt abgekürzt werden kann, wenn Sie einige Shells verwenden, und bei einigen Shells muss dieser Befehl möglicherweise sein (weil Punkt möglicherweise erkannt wird, aber das gesamte Wort source
möglicherweise nicht).
Wenn Sie den source
verwenden Befehl, liest Ihre Shell jede Zeile aus der Skriptdatei und versucht, sie auszuführen. Sie benötigen "Lese"-Berechtigungen für die Datei. (Es spielt keine Rolle, ob Sie "Ausführungs"-Berechtigungen haben.) Wenn Sie eine Variable ändern, kann dies Ihre aktuelle Shell beeinträchtigen.
Wenn Sie hingegen nur versuchen, die Datei auszuführen, wird Ihre Shell das Betriebssystem bitten, sich um diese Anfrage zu kümmern. Dies erfordert "Ausführungs"-Berechtigungen. (Auf einigen Systemen, wie OpenBSD, benötigen Sie dafür keine "Lese"-Berechtigungen. Auf anderen Systemen, einschließlich vieler Unix-Variationen, werden Sie dies tun.) Die Datei muss möglicherweise mit einem geeigneten Header beginnen (z. B. #!/bin/sh
), sodass das Betriebssystem dies als Skriptdatei erkennt. Das Betriebssystem führt eine Kopie der angeforderten Shell aus und weist diese Shell an, den Inhalt des Skripts auszuführen. Wenn die Shell-Umgebung geändert wird (z. B. eine Variable bekommt einen neuen Wert), wird das Arbeitsverzeichnis geändert (mit cd
), wird ein Dateideskriptor umgeleitet (mit exec
) usw.), wirkt sich dies nur auf die Sub-Shell aus, die für das Skript aufgerufen wurde, und kann die Umgebung in der übergeordneten Shell, die die Skriptdatei aufgerufen hat, nicht ändern.
Niemand sonst hat es erwähnt, da es oft vergessen wird.
Ihr größter Hinweis wäre der hilfreiche Befehl whatis
.
[email protected] ~ $ whatis .
builtins (1) - bash built-in commands, see bash(1)
[email protected] ~ $ whatis source
builtins (1) - bash built-in commands, see bash(1)
[email protected] ~ $ whatis bash
bash (1) - GNU Bourne-Again SHell
[email protected] ~ $ whatis lynx
lynx (1) - a general purpose distributed information browser for the World Wide Web
[email protected] ~ $ whatis linux
linux: nothing appropriate.
[email protected] ~ $ whatis whatis
whatis (1) - display one-line manual page descriptions
BEARBEITEN:
Einige Leute haben in den Kommentaren darauf hingewiesen, dass dies nicht in einigen Distributionen enthalten ist - vielleicht ist es ein installierbares Paket oder auf irgendeine Weise aktiviert - ich hatte es standardmäßig in Gentoo;)
Es enthält das wunderbare which - das Ihnen sagt, welche ausführbare Datei aufgerufen wird, und whereis, das Ihnen alle Pfade zu einer von Ihnen benannten ausführbaren Datei gibt, und ihre Manpages (falls sie in mehreren Pfaden existiert).