Linux下sh/bash/source/.命令的區別(轉)


一、.sh文件介紹

.sh為Linux的腳本文件,我們可以通過.sh執行一些命令,可以理解為windows的.bat批處理文件。

二、點命令(.)

.命令source是同一個命令,可以理解為source的縮寫,簡稱點命令

三、sh/base/source/.命令執行.sh文件的區別

假如有一個文件test.sh,腳本內容如下

#!/bin/bash
echo "step 1 sleeping"
sleep 200
echo "step 2 sleeping"
sleep 200

那么,現在按以下4種方式執行:

1、./test.sh

2、sh test.sh/bash test.sh

3、. test.sh

4、source test.sh

他們有何區別?

1、第一種方式,是在當前的shell執行腳本本身,也就是說把test.sh當成一個文件執行,這時候我們需要擁有test.sh的運行權限(x權限),而且當我們在執行此命令時,有2個新進程在運行,一個是test.sh,一個是sleep,如果我們在執行第一個sleep時按ctrl+c終止腳本,test.sh和sleep一起終止,並且第二個sleep不會執行,因為整個test.sh運行已經終止。

提示:假設這個test.sh文件在用戶目錄下,不要為.搞亂了,其實./的意思可以理解為運行當前目錄下的.sh腳本或者程序,這個效果和~/test.sh是同一個效果,其中~/表示用戶目錄

2、第二種方式,是新建一個shell執行test.sh腳本里面的命令,不需要執行權限,有讀取權限(r權限)即可,在執行此命令時,有2個新進程在運行,一個是bash,一個是sleep,如果執行第一個sleep時按ctrl+c,bash被終止,結果和第一種方式一樣,第二個sleep不會執行。

提示:bash是sh的加強版,也可以說是sh是bash的一個子集,用這兩個命令運行.sh文件效果基本一致。

3、第三種方式,是在當前shell執行test.sh里面的命令,不需要執行權限,有讀取權限(r權限)即可,在執行此命令時,只有一個新進程在運行,就是sleep,如果在執行第一個sleep時按ctrl+c終止,那么第二個sleep接着運行,直到腳本所有命令執行完。

4、第四種方式和第三種方式一致。

 

以上轉自:http://www.zengdongwu.com/article3.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM