linux执行shell脚本有3种方式
1使文件具有可执行权限chmod +x file 这样可以直接运行
2直接调用命令解释器执行
3使用source 执行文件
下面以一个简单的shell 说明他们的一点区别
#! /bin/bash
cd /tmp # 当前目录不再这里;
echo "hello world";
第一种执行方式
zhanghong@ubuntu:~/shell$ ./echo.sh
hello world
zhanghong@ubuntu:~/shell$ pwd
/home/zhanghong/shell
第二种
zhanghong@ubuntu:~/shell$ bash ./echo.sh
hello world
zhanghong@ubuntu:~/shell$ pwd
/home/zhanghong/shell
第3中种
zhanghong@ubuntu:~/shell$ source ./echo.sh
hello world
zhanghong@ubuntu:/tmp$ pwd
/tmp
看出区别了把,前两种执行方式一样的,第三种执行方式有区别
说明
linux shell 命令分三种
内建 就是shell本身包含的,他们主要集成在shell解释器中
shell函数,就是自定义的一些函数
外部命令,就是独立于shell解释器的一些外部可执行程序,比如你安装的一些程序
对于前两种,在执行过程中存在进程的创建和消亡,调用时回创建一个和父进程一样的子进程
在子进程里,以新程序执行,父进程进入休眠期,当子进程执行完毕返回时,唤醒父进程读取下一条命令
对于第3中不会创建子进程,而是在父进程中直接执行
上面的差异是因为子进程不能改变父进程的执行环境,所以CD(内建命令,只有内建命令才可以改变shell 的执行环境)没有成功,但是第3种没有子进程,所以CD 成功