shell脚本无法切换目录,原来是这个原因

本文探讨了在Shell脚本中使用cd命令进行目录切换时遇到的常见问题,即为什么在脚本中执行cd命令看似无效。文章详细解释了这一现象的原因在于子shell的生命周期,并提供了通过source或.命令来执行脚本,从而实现在当前shell中更改工作目录的有效解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

在写shell脚本的时候发现cd切换目录的时候无法切换,还是在当前目录下,这是什么原因呢?

shell脚本很简单,只有两行代码

#!/bin/bash
cd /mnt/data

原因

可以看到,代码层面是没有问题的。那么就可能是执行时的问题了。

我执行脚本使用的是./方式,./执行shell脚本会产生一个子shell(相当于一个新的进程),然后子shell执行脚本,相当于我们在子shell执行了切换目录操作,子shell操作完成之后,会马上退出,子shell中的变量和操作全部都会被收回,所以回到终端就看不出变化了。


解决方法

知道了原因,那么解决方法就很简单了。我们只需要更换shell脚本的执行方式即可,我们可以使用 source xxx.sh或者. ./xxx.sh去执行我们的脚本即可。

注:. ./xxx.sh .和.中间有个空格!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值