bash shell執行方式


五種bash shell執行方式 fork, source, exec, (), {}

 


Shell腳本的執行方式:

注明:wd代表“腳本保存的目錄”

  
1.fork
語法:/wd/shell.sh
fork是最普通的, 就是直接在腳本里面用/wd/shell.sh來調用shell.sh這個腳本.運行的時候開一個子shell執行調用的腳本,子shell執行的時候, 父shell還在。子shell執行完畢后返回父shell。子shell從父shell繼承環境變量.但是子shell中的環境變量不會帶回父 shell

2.exec
語法: exec /wd/shell.sh
exec與fork不同,不需要新開一個sub-shell來執行被調用的腳本. 被調用的腳本與父腳本在同一個shell內執行。但是使用exec調用一個新腳本以后, 父腳本中exec行之后的內容就不會再執行了。這是exec和source的區別。

3.source 
語法:source /wd/shell.sh
與fork的區別是不新開一個子shell來執行被調用的腳本,而是在同一個shell中執行。所以被調用的腳本中聲明的變量和環境變量, 都可以在主腳本中得到和使用。

4.()
語法:( 語句;語句;語句;…… )
圓括號中命令列表的命令將會運行在一個子shell中。

比如:
$ (cd ..;ls -l)
cd ..命令改變的是子Shell的PWD,而不會影響到交互式Shell。
然而命令
$ cd ..;ls -l
則有不同的效果,cd ..命令是直接在交互式Shell下執行的,改變交互式Shell的PWD,然
而這種方式相當於這樣執行Shell腳本:
$ source ./script.sh
或者
$ . ./script.sh

source或者.命令是Shell的內建命令,這種方式也不會創建子Shell,而是直接在交互式Shell下逐行執行腳本中的命令。


source命令、.命令
語法: . filename [arguments]
    source filename [arguments]
作用:
當在命令 行中調用的時候, 這個命令將會執行一個腳本. 當在腳本中調用的時候, source file-name 將會加載file-name文件, 或者 . (點命令)一個文件將會在腳本中引入代碼, 並將這些代碼附加到腳本中(與C語言中的#include指令效果相同). 最終的結果就像是在使用"source"的行上插入了相應文件的內容. 
在多個腳本需要引用相同的數據, 或者需要使用函數庫的情況下, 這個命令非常有用.

5.{}
{語句;語句;……}不會啟動子SHELL。


免責聲明!

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



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