說明:以下是個人的見解,不一定都正確,如有錯誤,歡迎指正! 一,shell腳本的運行方式,最常見的有以下幾種: 1 ) . xxx.sh,註意,前面是一個點'.' 2 ) source xxx.sh,這種方式和第一種的方式效果是一樣的 3)./xxx.sh 4) sh xxx.sh 5) bash ...
說明:以下是個人的見解,不一定都正確,如有錯誤,歡迎指正!
一,shell腳本的運行方式,最常見的有以下幾種:
1 ) . xxx.sh,註意,前面是一個點'.'
2 ) source xxx.sh,這種方式和第一種的方式效果是一樣的
3)./xxx.sh
4) sh xxx.sh
5) bash xxx.sh
二,shell運行方式結果的差異
1) . xxx.sh是在當前的bash環境下執行xxx.sh腳本文件,xxx.sh文件的所有者可以無可執行許可權,原有的環境變數的值會被腳本修改。
2)source xxx.sh,這種方式和方式1的執行效果是一樣的,同樣也不要求文件的所有者必須要有可執行許可權,通常用於生效剛修改過的腳本文件,例如我們在修改環境變數配置腳本文件之後就通過執行source xxx使其立即生效,同樣這種執行方式會修改原有的環境變數的值。
第一和第二種方式會修改原有的環境變數的值。
3)./xxx.sh方式運行腳本文件,會打開一個子shell來執行腳本文件,運行一個shell腳本時會啟動另一個命令解析器。每個shell腳本運行在parent shell的一個子進程里,這個parent shell是指一個在控制終端或者在一個xterm視窗中給你指示符的進程,shell腳本也可以啟動它自己的子進程。
這種運行方式要求被運行的腳本文件要有可執行的許可權,否則腳本運行失敗。
這種運行方式不會改變原有的環境變數的值。
4)sh xx.sh的方式執行腳本文件,這種方式會打開新的子shell讀取並執行腳本,並且不要求被執行的文件必須有可執行的許可權。
原有的環境變數的值沒被改變
5)bash xxx.sh的方式運行腳本文件,這種運行方式也沒有要求被執行文件必須有可執行的許可權,和sh xxx.sh方式一樣會打開新的子shell讀取並執行腳本,也不會改變原有的環境變數的值。
總結:
我們在寫腳本的時候,有時候需要改變原有的環境變數的值,有時候不能改變原有的環境變數的值,這時候我們就要註意選擇運行腳本的方式了,因為不同的運行腳本的方式會產生不同的結果。