./(点斜杠)
./(点斜杠)的意思是执行当前目录下的某个可执行文件
. (点空格)
. (点空格)某个脚本文件,相当于利用source文件执行这个脚本。
source命令用法:source FileName
作用:在当前bash环境下读取并执行FileName中的命令,该命令通常用命令“. ”来替代。如:source .bash_rc 与 . .bash_rc 是等效的。
source命令与shell scripts的区别:
source在当前bash环境下执行命令,而scripts是启动一个子shell来执行命令。这样如果把设置环境变量(或alias等等)的命令写进scripts中,就只会影响子shell,无法改变当前的BASH,所以通过文件(命令列)设置环境变量时,要用source 命令。
原来除了sh 和./执行脚本方式不同外,.(和source一样)和./执行脚本也是不一样的!
点斜杠执行脚本是启动了另一个Shell去执行脚本(另一个进程),所以点斜杠执行脚本时,设置的环境变量会随着进程的退出而结束,其中的环境变量设置对当前Shell不起作用。
点空格点斜杠执行脚本,是相当于source ./执行脚本,source是执行脚本当中的命令,也就是说在当前进程中执行命令,所以其中的环境变量的设置会对当前Shell其作用。例如:如下test.sh脚本(Ubuntu默认Shell为bash)
export Hello="Hello World"
(1) 执行命令:
$ ./test.sh
$ echo $Hello
执行结果:(空)
所以设置此环境变量,没有对当前Shell起作用。
(2) 执行命令:
$ . ./test.sh或. test.sh或source test
$ echo $Hello
执行结果:Hello World
对当前Shell设置此环境变量。