运行shell脚本使终端跟随脚本cd命令切换目录

日常开发中经常需要写一点脚本,project.sh有如下一段内容:

#!/usr/bin/env bash
dir=/data/httpd/www/project/$1
if [ ! -z $1 ] && [ -d $dir ];then
    cd $dir
else
    cd /data/httpd/www/project
fi

在当前终端,你如果直接执行./project.sh,是无法实现切换到指定目录的,因为shell在执行脚本时,会创建一个子shell,并在子shell中逐个执行脚本中的指令; 而子shell继承了父shell中的环境变量,但是执行后不会改变父shell的环境变量;如果想要代码中切换目录的操作生效,只需要通过source 命令执行即可:

source ./chdir.sh

source 命令是在当前的shell环境下执行脚本 ,不会创建子shell; 每次都要输入source是一件烦琐的事情,其实source命令又叫点命令,在需要用到source的情况下,直接换成.即可:

. ./chdir.sh

评论

评论正在提交中...请稍后
评论提交成功...