首先进入shell目录创建一个创建一个简单的脚本echo.sh
$cd ~/shell
$vi echo .sh
#!/bin/bash
cd /tmp
echo "hello world"
1.赋予脚本可执行权限,直接执行
$pwd
~/shell
$chmod +x echo.sh
$./echo.sh
hello world
$pwd
~/shell
2.使用解释器解释并执行该脚本
$pwd
~/shell
$chmod -x echo.sh
$/bin/bash echo.sh
hello world
$pwd
~/shell
3.使用source命令解释并执行该脚本
$pwd
~/shell
$chmod -x echo.sh
$source echo.sh
hello world
$pwd
/tmp
分析:发现第1,2中和第三种的区别在于前两种运行完后所在目录是~/shell,而第三种是/tmp。是什么原因呢?原来linux每启动一个终端都会为此终端开辟一个进程,假设当前的终端进程为P进程,当我们只想前两种方法时,p进程会fork一个子进程(假设为C进程),然后在C进程中运行echo脚本,C进程和P进程刚开始有一样的执行环境,也就是当前目录是~/shell,执行完echo.sh后C进程的当前目录会变成/tmp,然后执行echo "hello world",执行完该脚本C进程会销毁掉然后返回P进程,但是P进程的当前目录还是~/shell;source命令就不一样了,source命令会让P进程自己解释并执行echo.sh,所以执行完之后当前目录就是/tmp了。
阿里云双十一云服务器拼团活动,已经打到最低价99元一年!有需要的可以考虑一波了!
https://m.aliyun.com/act/team1111/#/share?params=N.9g4CZ2TwSh.qilw7y0a