Was ist der Unterschied zwischen "Quelle" und "."?

147

Was ist der Unterschied zwischen der Ausführung eines Skripts (zB / some / script) mit source /some/scriptund . /some/scriptin Bash?

binW
quelle

Antworten:

134

sourceund .sind auch in Bash .

Wenn Sie überprüfen möchten, ob die Befehle nur Synonyme und nichts weiter sind, lesen Sie den Quellcode , z. B. Version 4.3, und überprüfen Sie die Datei builtins/source.def. Sie werden , dass beide der integrierten Befehle lesen, sourceund .verwenden Sie die gleiche Funktion: source_builtin.

kiamlaluno
quelle
wo ist das definiert Ich meine ist. ein Alias ​​für die Quelle oder ist das etwas anderes?
BinW
genau das gleiche
12
@binW: .ist der traditionelle Quellbefehl , der von der alten Borowski-Shell geerbt wurde. sourceDies ist nur eine Bash-Funktion, die genau das Gleiche tut ., vermutlich, weil sie besser lesbar ist (eine .allein ist mit einer kleinen Schriftart möglicherweise schwer zu erkennen). Sie sehen help sourceund help .zeigen die gleichen Informationen.
Geirha
3
@binW: Wenn Sie recherchieren man bashund dann suchen source, sehen Sie, dass dies source filename [arguments]ein Synonym für ist . filename [arguments].
Matthew Rankin
46

.ist gleichbedeutend mit sourcein bash, aber nicht mit POSIX sh, daher sollten Sie verwenden, .wenn Ihr Skript von / bin / sh ausgeführt wird. Beachten Sie, dass bash behauptet, wie POSIX sh zu laufen, wenn es als / bin / sh aufgerufen wird, dies jedoch sourceohne Beanstandung akzeptiert .

Dieses Verhalten hat mich gebissen, Skripte, die mit bash wie / bin / sh getestet wurden, schlagen beispielsweise fehl, wenn sie unter Asche ausgeführt werden.

jjg
quelle
16
POSIX schränkt die Shell nicht ein. POSIX sagt nur; Die Shell muss mindestens dieses und jenes Feature unterstützen. Eine POSIX-Shell kann also zusätzliche Funktionen implementieren, solange die von POSIX beschriebenen Funktionen implementiert sind. Wenn der Schebang sagt, dass #!/bin/shSie niemals davon ausgehen sollten, dass die Shell nur POSIX-Funktionen unterstützt. pubs.opengroup.org/onlinepubs/9699919799/utilities/…
geirha
Möglicherweise sind Sie von der Reihenfolge der Namenssuche
Lekensteyn
3
Diese Antwort hat mir geholfen, da sh oft in cron verwendet wird.
Dfrankow