source 命令简单来说,就是读取脚本里的语句,并在当前Shell中执行,脚本里面所有新建、改变变量的语句都会保存在当前shell里。
目录
1、source 命令的使用方法
2、source命令的妙用
3、source Filename 和 ./Filename的区别
1、source 命令的使用方法
语法格式:source 脚本文件名 或者 . filename (. 和 filename之间有空格)
# 使用source来执行 variable.sh 脚本
linux@linux:~/Templates$ source variable.sh
# 在命令行打印 variable.sh 脚本里的变量
linux@linux:~/Templates$ echo $COUNT
1
因为是直接读取脚本内容到当前Shell执行,所以创建的变量可以直接在当前Shell 中使用。
但是如果新开一个终端窗口,相当于一个新的Shell,不会拷贝上一个窗口的环境。
2、source命令的妙用
source命令的作用是读取脚本里的语句,并在当前Shell中执行,即便对方不是脚本,只是一个具有执行权限的普通文件,source命令依然会执行里面的语句。有的时候我们需要频繁敲一些比较长而且繁琐的命令,这个时候就可以使用source 命令
比如有一个 myCommand 文件(里面暂时放一些简单的命令)
# myCommand 文件
ps jax | grep mytest
ls -al
pwd
我们使用source命令来执行这个文件(注意这个文件必须要有执行权限)
3、source Filename 和 ./Filename的区别
当一个文件具有执行权限的时候,sh Filename 和 ./Filename 没有区别,下面主要比对source Filename 和 ./Filename的区别:
- source Filename:读取脚本里的语句,并在当前Shell中执行。脚本里面所有新建、改变变量的语句都会保存在当前shell里
- ./Filename:创建一个新的子Shell,并在子Shell中执行。子Shell会继承父Shell的环境,但是子Shell对变量的创建、修改不会更新到父Shell
- 即便使用export也不会影响到父Shell的环境
- 父Shell对变量的修改会更新到子Shell
- 父Shell可以影响子Shell,但子Shell无法影响到父Shell