shell执行时.和./

今天在shell中写了一个cd目录,当使用./执行shell脚本,当脚本执行结束之后发现还在当前的路径,路径并未发生改变。下面说一下使用. 和./执行的不同效果。

首先写一个简单的测试sh;

#!/bin/sh
echo "before dir: `pwd`"
cd /home
echo "after dir: `pwd`"

下面看一下使用 ./shellName.sh 的执行现象:
shell1
在执行后目录又回到了改变之前的路径
再看一下使用 . shellName.sh 的执行现象:
shell2
可以明显的看到使用上面这种方式执行之后路径发生改变,达到了预期的效果。

在使用./执行脚本时会在打开一个新的子shell来运行脚本的内容,脚本中的内容也只在子shell的生命周期内生效,当退出之后,有回到了当前shell的环境。
而在使用. 执行时不会去新建一个子shell来执行脚本内容,所以对当前shell生效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值