“源”和“。”有什么区别?


147

在Bash source /some/script. /some/scriptBash中执行脚本(例如/ some / script)有什么区别?

Answers:


134

source并且.是同义猛砸

对于任何想验证命令只是同义词而已的人,请查看源代码,例如4.3版,然后检查文件builtins/source.def。您将阅读到这两个内置命令,source并且.使用了完全相同的功能:source_builtin


这个在哪里定义?我的意思是。源的别名,还是其他呢?
2011年

完全一样的东西

12
@binW:.是传统的源命令,继承自古老的bourne shell。source只是一个bash内置函数,其功能与完全相同.,大概是因为它更具可读性(.单独使用小字体可能很难发现它)。您将看到help sourcehelp .显示相同的信息。
geirha 2011年

3
@binW:如果您查看man bash然后进行搜索,source您会发现它source filename [arguments]是的同义词. filename [arguments]
马修·兰金

45

.source在bash中是同义词,但在POSIX sh中不是。因此,.如果脚本由/ bin / sh运行,则应使用。请注意,当bash称为/ bin / sh时,它声称其运行方式类似于POSIX sh,但毫无保留地接受source

这种行为让我很伤心,例如,在ash下运行时,使用bash测试为/ bin / sh的脚本失败。


16
POSIX不限制外壳。POSIX只是说;外壳应至少支持此功能。因此,只要实现了POSIX所描述的功能,POSIX外壳程序就可以自由地实现其他功能。当shebang告诉#!/bin/sh您时,您永远不要以为Shell除了POSIX功能外不支持任何其他功能。pubs.opengroup.org/onlinepubs/9699919799/utilities/…– geirha
2011年

您可能会受到名称查找顺序的影响:unix.stackexchange.com/q/17815/8250
Lekensteyn

2
这个答案对我有帮助,因为sh经常在cron中使用。
dfrankow
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.