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?

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.


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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.