在linux环境下,我们经常会有通过shell脚本进入指定目录的操作,脚本test1.sh内容如下:
#!/bin/sh
cd /home/soft
echo "abc"
cd -
sh ./test1.sh
执行之后并不会进入soft目录, 这是因为shell在执行脚本时,会创建一个子shell,并在子shell中逐个执行脚本中的指令; 而子shell中从父shell中继承了环境变量,但是执行后不会改变父shell的环境变量
解决方法:
source ./test1.sh
source命令是在当前shell环境下执行脚本,不会创建子shell;
cd -
该命令等同于cd $OLDPWD
,关于这一点在bash的手册页(可使用命令man bash访问其手册页)中有介绍:
An argument of - is equivalent to $OLDPWD.
并且它还会返回上一次目录的物理路径。