重学linux,发现还是有很多有趣又实用的命令,比如
source
作用
在当前bash环境下读取并执行FileName中的命令。简单来说就是将设置在文件中的配置信息马上生效,比如你设了一个alias,或者一个PATH如果你不source修改的文件的话,只有等下次重启后才能生效,如果你source了就马上生效了。
意思就是环境可以执行你环境所支持的所有命令组合的文件,也就是当你写了一个脚本文件的时候,可以通过
source
命令去执行。
使用范例:
source filename
# 或者
. filename
就是.
命令。
简单使用
如使用Hexo
搭建的博客,通常需要先清理,在生成,最后部署或者开本地服务,一连串的命令如下(这里只是举一个例子,通常脚本文件不会这么短):
hexo c && hexo g && hexo d/s
这时候就可以新建一个可执行文件如hexo_s
,并把上述代码输入其中。就可以通过source hexo_s
的去执行一连串的操作。
区分
sh filepath
sh filepath
会重新简历一个子shell
,在子shell
中执行脚本里面的语句,该子shell
继承父shell
的环境变量,但子shell
是新建的,其改变的变量不会被带回父shell
,除非使用export。
source filename
source filename
就是简单地读取file
中的所有语句,没有建立新的子shell
。那么脚本里面所有新建、改变变量的语句都会保存在当前shell
里面。因为不会建立新的子shell,变量的值都可以直接取到:
# ming @ ming-virtual-machine in ~/demo [20:32:48]
$ cat hwinfo
type=x86
provider=vm
model=vm
product=center
date=20140918
输出如下:
# ming @ ming-virtual-machine in ~/demo [20:33:16]
$ source hwinfo > /dev/null&& echo $product
center
这里的&&
的含义是,当左边的命令执行成功时,才会执行右边的命令;||
就相反,左边的命令执行失败,才执行右边的命令。