shell中 source命令即点空格后面再跟可执行文件的说明

这里记录的是在一个shell脚本里面使用
. ./file.sh 和
./file.sh 的区别,本文参考了http://www.lslnet.com/linux/dosc1/39/linux-283534.htm (这个蓝森林的东西应该是来源于chinaunix)


来个小实验
场景一:
vi file1.sh
./file2.sh
echo $NIVEK

vi file2.sh
NIVEK=goupi
export NIVEK

chmod 755 file1.sh file2.sh

$./file1.sh
                  //没有任何输出
$

场景二:
vi 1file.sh
. ./2file.sh
echo $NIVEK

vi 2file.sh
NIVEK=goupi
export NIVEK

chmod 755 1file.sh 2file.sh

$./1file.sh
goupi              //在2file.sh里面export 的变量NIVEK的值
$

由此可以看到它们的区别,即
./file.sh  将重启一个新的子shell来执行它 ,所以如果在file.sh中定义的一些变量(export)只在子shell有作用,返回后将失去作用.

. ./file.sh 不启动新的shell,在当前shell中执行 ,所以在file.sh中定义的变量返回后依然有作用.


再看一下这个简单的例子:
cat 1.sh 
#!/bin/bash
sleep 1
exit 1

cat test1.sh 
#!/bin/bash
./1.sh
echo "can you see me"

cat test2.sh 
#!/bin/bash
. ./1.sh
echo "can you see me"

分别执行test1.sh, test2.sh从它们的区别里面可以看到一些不同
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值