shell脚本中cd命令不起作用

最近在学习shell脚本,写了一个简单的demo,想要实现的是cd一个文件夹然后再创建文件,可是执行了shell脚本的时候,却发现cd命令没有生效。导致我的文件夹和文件都没有创建

# !/bin/bash
read -p "请输入文件夹的名字:" dirName
if [ -e $dirName ];then
    echo "$dirName 是存在的即将进入文件夹"
    cd $dirNamem
    echo "即将创建文件名为test"
    touch test.c
else
   echo "该文件夹不存在,即将创建文件夹"
   mkdir $dirName
   echo "即将进入$dirName 文件夹中"
   cd $dirName

去查了一下资料,发现了这是因为shell在执行脚本时,会创建一个子shell,并在子shell中逐个执行脚本中的指令; 而子shell中从父shell中继承了环境变量,但是执行后不会改变父shell的环境变量
我使用了两种方法去使我的cd生效

  1. 使用source命令
    在执行shell脚本时,不使用 ./XXX.sh。而是使用source xxx.sh的方法,这个会创建文件,但直接回到了~目录(没有解决cd不)
  2. 在cd后面增加exec /bin/bash
    这个指令是指bash脚本在其当前环境或其子级环境上运行,但不在其父级环境上运行

猜你喜欢

转载自blog.csdn.net/weixin_39040527/article/details/109581681
今日推荐