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

#1 楼

source.在Bash中是同义词。

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

评论


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

– binW
2011年2月9日在18:26

完全一样的东西

–user8290
2011年2月9日在18:42

@binW:。是传统的源代码命令,继承自古老的伯恩贝壳。 source只是一个与.b完全相同的bash内置函数,大概是因为它更具可读性(仅使用。字体很难发现。)。您会看到帮助源和帮助。显示相同的信息。

– Geirha
2011-2-9 23:56



@binW:如果您查看man bash并搜索源,则会看到源文件名[arguments]是的同义词。文件名[参数]。

–马修·兰金(Matthew Rankin)
2011-2-17在12:22

#2 楼

.在bash中与source是同义词,但在POSIX sh中不是,因此,如果脚本由/ bin / sh运行,则应使用.。请注意,bash称为/ bin / sh时声称运行类似于POSIX sh,但接受source却没有任何抱怨。

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

评论


POSIX不限制外壳。 POSIX只是说;外壳应至少支持此功能。因此,只要实现了POSIX所描述的功能,POSIX外壳程序就可以自由地实现其他功能。当shebang说出#!/ bin / sh时,您不应假定外壳支持POSIX功能以外的任何功能。 pubs.opengroup.org/onlinepubs/9699919799/utilities/…

– Geirha
2011年2月9日在23:51

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

– Lekensteyn
12年7月16日在11:05

这个答案对我有所帮助,因为sh经常在cron中使用。

– dfrankow
13年8月8日在14:25