Versuchen Sie, man sh
oder man bash
oder die Manpage für die von Ihnen verwendete Shell zu verwenden. (Vielleicht man $SHELL
.)
Dies wird offiziell nicht als "Punkt" -Befehl bezeichnet, sondern als source
Befehl. Das Suchen nach dem Wort source
kann hilfreich sein.
zB bash man page (suche nach "jedem eingebauten Befehl"), und du wirst schnell die Dokumentation finden.
Zur Erläuterung der Verwendung kann ich das hier tun. Ich werde dies nur als den source
Befehl bezeichnen und erkennen, dass er auf einen Zeitraum abgekürzt werden kann, in dem Sie einige Shells verwenden, und dass dieser Befehl bei einigen Shells möglicherweise erforderlich ist (da der Punkt möglicherweise erkannt wird, das gesamte Wort jedoch source
möglicherweise nicht) Sein).
Wenn Sie den source
Befehl verwenden, liest Ihre Shell jede Zeile aus der Skriptdatei und versucht, sie auszuführen. Sie benötigen Leseberechtigungen für die Datei. (Es spielt keine Rolle, ob Sie über Ausführungsberechtigungen verfügen.) Wenn Sie eine Variable ändern, kann dies die aktuelle Shell beeinträchtigen.
Wenn Sie andererseits nur versuchen, die Datei auszuführen, fordert Ihre Shell das Betriebssystem auf, sich um diese Anforderung zu kümmern. Dies erfordert "Ausführen" -Berechtigungen. (Auf einigen Systemen, wie OpenBSD, werden dafür keine "Lese" -Rechte benötigt. Auf anderen Systemen, einschließlich vieler Unix-Variationen, werden Sie dies tun.) Die Datei muss möglicherweise mit einem entsprechenden Header (z. B. #!/bin/sh
) beginnen, damit sie ausgeführt werden kann Das System erkennt dies als Skriptdatei. 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 einen neuen Wert erhält, wird das Arbeitsverzeichnis geändert (mit cd
), ein Dateideskriptor wird umgeleitet (mit) exec
) usw.) betrifft nur die Sub-Shell, die für das Skript aufgerufen wurde, und kann die Umgebung in der übergeordneten Shell, die die Skriptdatei aufgerufen hat, nicht ändern.