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


Was ist der Unterschied zwischen der Ausführung eines Skripts (z. B. / some / script)? source /some/script und . /some/script in Bash?


136
2018-02-09 17:18


Ursprung




Antworten:


source und . sind auch in Bash.

Für alle, die überprüfen möchten, dass die Befehle einfach Synonyme sind und nicht mehr, schauen Sie sich die Quellcode, sagen wir für die Version 4.3, und untersuchen Sie die Datei builtins/source.def. Sie werden lesen, dass die beiden eingebauten Befehle source und ., benutze die gleiche Funktion: source_builtin.


123
2018-02-09 17:26



Wo ist das definiert? Ich meine, ist. ein Alias ​​für die Quelle oder ist das etwas anderes? - binW
genau dasselbe
@binW: . ist der traditionelle Quellbefehl, der von der alten Bourne-Shell übernommen wurde. source ist nur ein Bash Built-In, der genau das gleiche tut ., vermutlich weil es besser lesbar ist (a . allein kann mit einer kleinen Schrift schwer zu erkennen sein). Du wirst sehen help source und help . zeigt die gleichen Informationen. - geirha
@binW: Wenn du reinschaust man bash und dann suchen source Du wirst das sehen source filename [arguments] ist ein Synonym für . filename [arguments]. - Matthew Rankin
Das widerspricht tatsächlich dem, was ich in dieser Frage sehe: askubuntu.com/questions/182012/... - ysap


. ist auch mit source in bash, aber nicht in POSIX sh, also sollten Sie verwenden . wenn Ihr Skript von / bin / sh ausgeführt wird. Beachten Sie, dass bash angibt, wie POSIX sh zu laufen, wenn sie als / bin / sh aufgerufen wird, aber akzeptiert source ohne Beschwerde.

Dieses Verhalten hat mich gebissen, Skripte, die mit Bash als / bin / sh getestet wurden, versagen, wenn sie beispielsweise unter Asche laufen.


41
2018-02-09 20:42



POSIX beschränkt die Shell nicht. POSIX sagt nur; Die Shell muss zumindest 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 Shebang sagt #!/bin/sh Sie sollten niemals davon ausgehen, dass die Shell irgendetwas anderes als POSIX-Funktionen unterstützt. pubs.opengroup.org/onlinepubs/9699919799/utilities/... - geirha
Sie können von der Reihenfolge der Suche nach Namen betroffen sein: unix.stackexchange.com/q/17815/8250 - Lekensteyn
Diese Antwort hat mir geholfen, da sh oft in Cron verwendet wird. - dfrankow