linux脚本运行的三种方法

首先进入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

你可能感兴趣的:(linux脚本运行的三种方法)