Linux下source号令、点号令和./施行号令的差别
关于经常利用linux系统的同窗而言,source filename与./filename应该是各人日常十分高频利用的号令了,其实除了那两个外,还有一个喊做点号令的工具,那么那几者之间有什么区别和联络呢?日常工做进修中,我们又什么时候会用到那些号令符号呢?
什么是点号令?
起首,不要将点号令与点文件或相对途径表达法稠浊。例如 .profile 表达该文件(夹)是一个隐躲文件(夹),您需要利用 ls -a 看到该文件(夹)。别的点还能够表达相对途径,好比,当前文件夹中有一介名为“my-script.sh”的脚本,./my-script.sh 表达当前目次下的my-script.sh脚本。../my-script.sh 表达上一层目次的my-script.sh脚本。
点号令,一种在当前shell下读进途径为filename的文件并依次施行文件中的所有语句的号令,即不会启动一个新的子历程,所有在脚本中设置的变量将成为当前Shell的一部门。好比:当我们修改了/etc/profile文件,并想让它立即生效,而不消从头登录,就能够利用点号令,如“. /etc/profile”,那么一看是不是觉得有点眼熟,那不就是source号令吗?
展开全文
source号令,从C Shell而来,是bash shell的内置号令。点号令,从Bourne Shell而来,是source的另一名称。在bash情况下,两者在利用上是等价的。
source filename(. filename) 与sh filename 及 ./filename施行脚本的区别
举例
#!/usr/bin/env bash
export A="hello world"
echo $A
在当前目次下,我们有一个脚本my-script.sh脚本,内容如上。那时候,我们往施行./my-script.sh或 sh my-script.sh,会得到下面的成果。
$ ./test.sh
hello world
$ echo $A
也就是说,脚本施行了,但是脚本里的情况变量并没有影响当前shell。但是当我们施行. my-script.sh(重视中间有一个空格),或source my-script.sh。
$ . test.sh
hello world
$ echo $A
hello world
能够看到,A那个变量间接在当前shell下生效了,改动了当前情况的变量。
小结
上面几种号令都能够用来主动施行Shell脚本,从而实现主动化治理。它们能够用来启动某些办事,安拆某些软件,改动某些操做系统参数或完成其他操做,也能够用来查抄脚本的准确性,例如查抄脚本的语法和变量定义等。利用那些号令能够节约时间和节约资本,进步脚本的工做效率。
但是source号令和点号令会改动当前shell的形态,因而在现实利用过程中,我们要可以晓得他们的不异与差别。