Linux sh、source和.命令執行.sh檔案的區別
阿新 • • 發佈:2018-12-18
摘自:http://www.zengdongwu.com/article3.html
sh檔案介紹
.sh為Linux的指令碼檔案,我們可以通過.sh執行一些命令,可以理解為windows的.bat批處理檔案。
點命令
.命令和source是同一個命令,可以理解為source的縮寫,簡稱點命令。
sh、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
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執行已經終止。
2)第二種方式,是新建一個shell執行test.sh腳本里面的命令,不需要執行許可權,有讀取許可權(r許可權)即可,在執行此命令時,有2個新程序在執行,一個是bash,一個是sleep,如果執行第一個sleep時按ctrl+c,bash被終止,結果和第一種方式一樣,第二個sleep不會執行。
3)第三種方式,是在當前shell執行test.sh裡面的命令,不需要執行許可權,有讀取許可權(r許可權)即可,在執行此命令時,只有一個新程序在執行,就是sleep,如果在執行第一個sleep時按ctrl+c終止,那麼第二個sleep接著執行,直到指令碼所有命令執行完。
4)第四種方式和第三種方式一致。