Shell腳本的三種執行方式


Shell腳本的執行方式可以有以下幾種:

方式一: 

./script.sh     # 利用小數點來執行

方式二: 

sh script.sh 或 bash script.sh      #  利用bash(sh)來執行腳本

前面兩種方式其實都是一樣的:都是在當前父進程下的子進程中執行,子進程完成后,子進程中的各項變量或操作將會結束而不會傳回到父進程中.舉例來說:

可以看到,執行后再看腳本中兩個變量,在父進程中不起作用!

備注: 如果在script2.sh文件里面執行script1.sh的腳本,那么就是執行.  ./script1.sh   [中間有空格]

方式三: 

 source script.sh  或 . liqiang.sh#  利用小數點來執行

而通過第三種方式執行(source test.sh)的話,在父進程中就起作用了:

 

這就是直接執行與用source命令執行的區別,前者只作用於子進程本身,后者則作用於整個父進程。

因此:如要想不注銷系統,並讓全局配置文件生效,則必須用source命令:

比如說: 在全局配置文件中/etc/profile添加了JAVA_HOME,要讓他對整個環境生效

export JAVA_HOME=/usr/java/jdk1.7.0_75

就必須執行source /etc/profile

注意:在執行時要賦權限

chmod a+x liqiang.sh #賦權限chmod a+x script-name

補充知識點:

一個規范的Shell腳本在第一行會指出由哪個程序(解釋器)來執行腳本中的內容,這一行內容在Linux bash的編程一般為:

#!/bin/bash

#!/bin/sh

注意:

(1)在Shell中如果一行的第一個字母是#,則是注釋,但是上面兩個是寫在第一行,所以不是腳本注釋行,如果寫在某個命令之后,則變成注釋行。

(2)sh為bash的軟鏈接,大多數情況下,腳本的開頭使用“#!/bin/bash”和“#!/bin/sh”是沒有區別的,但更規范的寫法是在腳本的開頭使用“#!/bin/bash”。


免責聲明!

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



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