首先進(jìn)入shell目錄創(chuàng)建一個(gè)創(chuàng)建一個(gè)簡單的腳本echo.sh
$cd ~/shell
$vi echo .sh
#!/bin/bash
cd /tmp
echo "hello world"
1.賦予腳本可執(zhí)行權(quán)限,直接執(zhí)行
$pwd
~/shell
$chmod +x echo.sh
$./echo.sh
hello world
$pwd
~/shell
2.使用解釋器解釋并執(zhí)行該腳本
$pwd
~/shell
$chmod -x echo.sh
$/bin/bash echo.sh
hello world
$pwd
~/shell
3.使用source命令解釋并執(zhí)行該腳本
$pwd
~/shell
$chmod -x echo.sh
$source echo.sh
hello world
$pwd
/tmp
分析:發(fā)現(xiàn)第1,2中和第三種的區(qū)別在于前兩種運(yùn)行完后所在目錄是~/shell,而第三種是/tmp。是什么原因呢?原來linux每啟動(dòng)一個(gè)終端都會(huì)為此終端開辟一個(gè)進(jìn)程,假設(shè)當(dāng)前的終端進(jìn)程為P進(jìn)程,當(dāng)我們只想前兩種方法時(shí),p進(jìn)程會(huì)fork一個(gè)子進(jìn)程(假設(shè)為C進(jìn)程),然后在C進(jìn)程中運(yùn)行echo腳本,C進(jìn)程和P進(jìn)程剛開始有一樣的執(zhí)行環(huán)境,也就是當(dāng)前目錄是~/shell,執(zhí)行完echo.sh后C進(jìn)程的當(dāng)前目錄會(huì)變成/tmp,然后執(zhí)行echo "hello world",執(zhí)行完該腳本C進(jìn)程會(huì)銷毀掉然后返回P進(jìn)程,但是P進(jìn)程的當(dāng)前目錄還是~/shell;source命令就不一樣了,source命令會(huì)讓P進(jìn)程自己解釋并執(zhí)行echo.sh,所以執(zhí)行完之后當(dāng)前目錄就是/tmp了。
阿里云雙十一云服務(wù)器拼團(tuán)活動(dòng),已經(jīng)打到最低價(jià)99元一年!有需要的可以考慮一波了!
https://m.aliyun.com/act/team1111/#/share?params=N.9g4CZ2TwSh.qilw7y0a