G
N
I
D
A
O
L

linux_source

重学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

这里的&&的含义是,当左边的命令执行成功时,才会执行右边的命令;||就相反,左边的命令执行失败,才执行右边的命令。

posted @ 2021-12-20 20:57  StimuMing  阅读(30)  评论(0编辑  收藏  举报