Linux系統指令碼的三種執行方式

2021-06-16 14:05:25 字數 1937 閱讀 5452

1、source命令用法: 

source filename

作用:在當前bash環境下讀取並執行filename中的命令。該filename檔案可以無"執行許可權" 

注:該命令通常用命令「.」來替代。 

如:source bash_profile 

. bash_profile兩者等效。 

source(或點)命令通常用於重新執行剛修改的初始化文件。 

source命令(從 c shell 而來)是bash shell的內建命令。 

點命令,就是個點符號,(從bourne shell而來)。就是順序的執行檔案裡的命令而已。

2、sh和bash命令用法: 

sh filename 

bash filename 

作用:在當前相應的bash環境下新建乙個子shell讀取並執行filename中的命令。該filename檔案可以無"執行許可權" 

注:兩者在執行檔案時的不同,是分別用自己的shell來跑檔案。 

sh使用「-n」選項進行shell指令碼的語法檢查,使用「-x」選項實現shell指令碼逐條語句的跟蹤,可以巧妙地利用shell的內建變數增強「-x」選項的輸出資訊等。

3、./的命令用法: 

./filename 

作用:開啟乙個子shell來讀取並執行filename中命令。 

該檔案必須有可執行的許可權。 

注:執行乙個shell指令碼時會啟動另乙個命令直譯器. 

每個shell指令碼有效地執行在父shell(parent shell)的乙個子程序裡. 

這個父shell是指在乙個控制終端或在乙個xterm視窗中給你命令指示符的程序.shell指令碼也可以啟動他自已的子程序.這些子shell(即子程序)使指令碼並行地,有效率地地同時執行指令碼內的多個子任務.指令碼裡的變數設定在父程序中無效。指令碼中的export僅僅作用於該指令碼及其子指令碼位置變數引數在向指令碼傳遞引數時,可以使用此位置變數來獲取引數。他們分別是: 

$0:指令碼名字。此變數包含位址,可以使用basename

$0獲得指令碼名稱。 

$1:第乙個引數 

$2,$3,$4,$5,...一次類推。

特定變數引數 

一些指令碼執行的相關控制資訊 

$# 傳遞到指令碼的引數個數 

$* 以乙個單字串顯示所有向指令碼傳遞的引數 

$$ 指令碼執行的id號 

$! 後台執行的最後乙個程序的id號 

$@ 與$#相同,但是使用時加引號,並在引號中返回每個引數。 

$- 顯示shell使用的當前選項。 

$? 顯示最後命令的推出狀況。0表示沒有錯誤。

source filename 與 sh filename 及./filename執行指令碼的區別在那裡呢?

1.當shell指令碼具有可執行許可權時,用sh filename與./filename執行指令碼是沒有區別得。./filename是因為當前目錄沒有在path中,所有"."是用來表示當前目錄的。

2.sh filename 重新建立乙個子shell,在子shell中執行指令碼裡面的語句,該子shell繼承父shell的環境變數,但子shell新建的、改變的變數不會被帶回父shell,除非使用export。

3.source filename:這個命令其實只是簡單地讀取指令碼裡面的語句依次在當前shell裡面執行,沒有建立新的子shell。那麼指令碼裡面所有新建、改變變數的語句都會儲存在當前shell裡面。

舉例說明:

1.新建乙個test.sh指令碼,內容為:a=1

2.然後使其可執行chmod +x test.sh

3.執行sh test.sh後,echo $a,顯示為空,因為a=1並未傳回給當前shell

4.執行./test.sh後,也是一樣的效果

5.執行source test.sh 或者 . test.sh,然後echo $a,則會顯示1,說明a=1的變數在當前shell中

linux執行命令 指令碼的三種方式

etc rc.local新增想要被執行的命令即可 預設是以root使用者執行 2.以期望的使用者執行命令 su c ls l myfile.txt guowei 解釋 其中需要被執行的命令是 ls l myfile.txt 期望執行命令的使用者是guowei,表示在後台執行。3.開機以 screen...

shell指令碼的三種執行方式

執行shell指令碼的三種方式有 1.sh test.sh 2.test.sh 3.source test.sh or test.sh 對於test.sh指令碼來說,如果沒有執行許可權或者沒有在檔案開頭指定直譯器,那麼只能使用第一種執行方式,除此之外,他們沒有什麼差別 但是對於第三種執行方式來說,它...

hive指令碼的三種執行方式

1.hive控制台執行,安裝了hive之後直接命令列輸入hive,進入控制台。2.hive e sql語句 直接輸入就會有結果,sql語句根據具體情況自己書寫 a.sql的內容如下 set mapred.job.queue.name default set hive.exec.reducers.ma...