前言
在写shell脚本的时候发现cd切换目录的时候无法切换,还是在当前目录下,这是什么原因呢?
shell脚本很简单,只有两行代码
#!/bin/bash
cd /mnt/data
原因
可以看到,代码层面是没有问题的。那么就可能是执行时的问题了。
我执行脚本使用的是./方式,./执行shell脚本会产生一个子shell(相当于一个新的进程),然后子shell执行脚本,相当于我们在子shell执行了切换目录操作,子shell操作完成之后,会马上退出,子shell中的变量和操作全部都会被收回,所以回到终端就看不出变化了。
解决方法
知道了原因,那么解决方法就很简单了。我们只需要更换shell脚本的执行方式即可,我们可以使用 source xxx.sh或者. ./xxx.sh去执行我们的脚本即可。
注:. ./xxx.sh .和.中间有个空格!