在linux环境下,常有通过shell脚本进入指定目录的操作,例如有一段脚本 framework.sh
#!/bin/bash
echo "\n----------- 开始进入指定文件夹 --------------\n";
cd /Users/xxxx/Downloads/work/html
pwd
ls -l
open app
最后执行 ./framework.sh
但是
有时候在shell环境下通过./framework.sh执行这段脚本是无法进入html目录的;需要通过source ./framework.sh 或者 . ./framework.sh命令执行即可:
可能是shell在执行脚本时,会创建一个子shell,并在子shell中逐个执行脚本中的指令; 而子shell中从父shell中继承了环境变量,但是执行后不会改变父shell的环境变量;