Ich brauche Hilfe für Punktbefehle .
wie in . ./my_script.sh
(ich meine den ersten Punkt.)
Ich habe bereits versucht, mit man .
und eine Manpage zu finden man \.
. Wie kann ich eine Manpage anzeigen, in der die Verwendung von Befehlen erläutert wird .
?
help .
dot
. Siehe die formale Spezifikation unter pubs.opengroup.org/onlinepubs/009696699/utilities/dot.html.
ist ein Befehl, insbesondere eine eingebaute Shell. In Bash ist es gleichbedeutend mitsource
..
ist POSIX, nicht nur bash. ZB ist es auch in zsh und ksh.Antworten:
Als Erstes sollten Sie Folgendes aufrufen
type .
:Builtins sind Teile Ihrer Shell, sie haben keine eigenen Manualpages. Einige von ihnen scheinen sie zwar zu haben, zB
echo
ist sie in Bash eingebaut, aber höchstwahrscheinlich gibt es eine separate ausführbare Datei wie/bin/echo
in Ihrem System und in diesem Fallman echo
bezieht sie sich auf die letztere . Diese beidenecho
sind wahrscheinlich nicht genau gleichwertig.Ihre Shell kann über
help
builtin Informationen zu allen eingebauten Elementen bereitstellen. versuchenhelp help
,help type
und schließlich:Builtins können auch in der Manualpage Ihrer Shell aufgeführt sein. ZB (in meinem Debian) Bash-Buildins werden direkt in behandelt
man bash
, aber für Zsh-Buildins mussman zsh
ich sie ausführenman zshbuiltins
. Im Allgemeinen können Shells ihre Buildins erklären oder nicht.quelle
.
eine Shell eingebaut ist und Dies sollte als Antwort markiert werden, da OP fragthow to find help for . in *nix ?
.type .
, um zu demonstrieren, dass einige Befehle Shell-Builtins sind.bash-builtins(1)
Manual-Seite extrahiert, die eine bequemere Größe hat.. --help
funktioniertVersuchen Sie,
man sh
oderman bash
oder die Manpage für die von Ihnen verwendete Shell zu verwenden. (Vielleichtman $SHELL
.)Dies wird offiziell nicht als "Punkt" -Befehl bezeichnet, sondern als
source
Befehl. Das Suchen nach dem Wortsource
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 jedochsource
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 (mitcd
), 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.quelle
source
in Bash. In der POSIX-Spezifikation heißt es "the dot command" (und dersource
Alias wird nicht unterstützt).man bash
und was dann/.
? Nicht sehr nützlich./source
wäre nützlich, aber dafür müsst ihr das wissen.
undsource
seid dasselbe..
und es könnte seinsource
, aber wie @CharlesDuffy bereits erwähnt, es ist immer.
in jedem POSIX-kompatiblen Shell und hat nur die Aliasnamensource
in eine Schale.Niemand sonst hat es erwähnt, wie es oft vergessen wird.
Ihr größter Hinweis würde vom hilfreichen Befehl kommen
whatis
.BEARBEITEN:
Einige Leute haben in den Kommentaren darauf hingewiesen, dass dies in einigen Distributionen nicht der Fall ist - vielleicht handelt es sich um ein installierbares Paket oder wie es aktiviert wurde - ich hatte es standardmäßig in gentoo;)
Es enthält das wunderbare Was - welches Ihnen sagt, welche ausführbare Datei aufgerufen wird, und wo es Ihnen alle Pfade zu einer ausführbaren Datei gibt, die Sie benennen, sowie Manpages (falls diese in mehreren Pfaden vorhanden sind).
quelle
whatis .
kehrtman: 0703-307 . is not found.
whatis .
gibt auf Ubuntu 16.04whatis .
" gab ".: nothing appropriate.
" es unter OpenBSD 47 Ausgabezeilen. Für dieses spezielle Beispiel (Verwendung von "whatis .
" in Gentoo) sind die Ergebnisse möglicherweise nur ungewöhnlich gut (was bedeutet, dass diese Technik für viele andere Beispielszenarien im Allgemeinen nicht so nützlich ist).man source
zeigt die Erklärung, die Sie benötigen.Der Punkt ist derselbe wie der Quellbefehl.
source
Führt das Skript in der aktuellen Shell statt in einer Subshell aus (wie üblich).Die Verwendung
source
der im Skript festgelegten Variablen bleibt nach Abschluss des Skripts erhalten.quelle
man source
funktioniert das? Nicht in meinem Debian, daher die Frage.source
Upstream - das ist wahrscheinlicher, als CentOS es getan hat.man source
gibt Ihnenman bash_builtins
, was nichts erklärt, sondern verweist Sie aufbash(1)
man source
gibt es michsource(3tcl)
...type command
und dann, wenn der Befehl ein eingebauterhelp command
ist, ist wahrscheinlich der richtige Weg ...Das
.
ist ein Synonym für den Shell-source
Befehl und in der Bash wird seine Syntax von ...Es funktioniert genau wie der Befehl
include
undimport
in anderen Sprachen, da es die Zieldatei liest und so interpretiert, als wäre es Teil des aktuellen Skripts. Somit wird diese Datei in ihrer Gesamtheit vor den Befehlen im Rest des aktuellen Skripts ausgeführt.Es sollte sich normalerweise am Anfang des aktuellen Skripts befinden und wird am häufigsten zum Laden von Variablen und / oder Funktionsdefinitionen verwendet.
quelle