Unix:源和导出有什么区别?

我正在编写一个shell脚本,读取具有key = value对的文件,并将这些variables设置为环境variables。 但我有一个疑问,如果我做source file.txt会将该文件中定义的variables设置为环境variables,或者我应该逐行阅读文件,并使用导出命令设置它?

在这种情况下,源命令是否与导出不同?

Solutions Collecting From Web of "Unix:源和导出有什么区别?"

当您输入文件时,除非设置了allexport选项,否则赋值将被设置为变量,但不能设置为环境变量。 如果要将变量放置在环境中,则使用allexportsource文件要比读取文件并显式使用export简单得多。 换句话说,你应该这样做:

 set -a . file.txt 

(我更喜欢它,因为它比source更便携,但sourcebash运行得很好。)