Shell腳本的三種執行方式

Shell腳本的執行方式能夠有如下幾種:java

方式一: 編程

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

方式二: bash

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

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

能夠看到,執行後再看腳本中兩個變量,在父進程中不起做用!code

備註: 若是在script2.sh文件裏面執行script1.sh的腳本,那麼就是執行.  ./script1.sh   [中間有空格]blog

方式三: 進程

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

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

 

這就是直接執行與用source命令執行的區別,前者只做用於子進程自己,後者則做用於整個父進程。class

所以:如要想不註銷系統,並讓全局配置文件生效,則必須用source命令:test

好比說: 在全局配置文件中/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」。

相關文章
相關標籤/搜索