2011-03-06 46 views

回答

0

source.采取一个文件作为参数。该文件中的每行代码都被执行。所以,我不认为

. ./ 

会工作。

$ . ./ 
-bash: .: ./: is a directory 
$ echo "echo Hello" > out 
$ . out 
Hello 
$ source out 
Hello 
3

“.//”会尝试运行一个名为'?'的程序它将驻留在当前目录中,并将在当前shell中运行。第一个点代表'运行在当前shell'(而不是产生一个新的)','./'代表'当前目录'和'?'将意味着一个名为'?'的可执行文件将不得不存在。

+1

请注意,文件不需要可执行文件来源于'.'。它必须是一个shell脚本(即你不能获得一个编译好的可执行文件)。 – sepp2k 2011-03-06 22:21:50

1

在文件名上运行.将运行文件中的命令,就像在shell命令提示符下键入它们一样。与shell脚本不同,文件产生的环境变量(和类似的)更改在运行文件之后仍然存在;当脚本完成时,由shell脚本所做的更改将被还原。

1

.source命令将给定文件读入当前shell。即基本上给定的文件是通过键入. filename运行的shell脚本,但是使用.(或source,这与之等效)不同于通常作为shell脚本运行文件,因为它不产生子shell并因此保留变量由脚本导出。所以如果脚本设置并导出变量,脚本完成后它们仍然会被设置。