一、.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、第四種方式和第三種方式一致。