1. 程式人生 > >Linux sh、source和.命令執行.sh檔案的區別

Linux sh、source和.命令執行.sh檔案的區別

摘自: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)第四種方式和第三種方式一致。