source 命令的用法(与 sh Filename、./Filename的区别)

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

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值